使用 SQL 程式碼編輯器查詢設定的資料表 - AWS Clean Rooms

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 SQL 程式碼編輯器查詢設定的資料表

身為可以查詢的成員,您可以在 SQL 程式碼編輯器中撰寫 SQL 程式碼來手動建置查詢。SQL 程式碼編輯器位於 AWS Clean Rooms 主控台分析索引標籤的分析區段。

預設會顯示 SQL 程式碼編輯器。如果您想要使用分析建置器來建置查詢,請參閱 使用分析建置器查詢

重要

如果您開始在程式碼編輯器中寫入 SQL 查詢,然後開啟分析建置器 UI,則不會儲存您的查詢。

AWS Clean Rooms 支援許多 SQL 命令、函數和條件。如需詳細資訊,請參閱 AWS Clean Rooms SQL 參考

提示

如果在查詢執行時發生排程維護,查詢會終止並復原。您必須重新啟動查詢。

使用 SQL 程式碼編輯器查詢設定的資料表
  1. 登入 AWS 管理主控台 ,並在 https://https://console.aws.amazon.com/cleanrooms 開啟 AWS Clean Rooms 主控台。

  2. 在左側導覽窗格中,選擇協同合作

  3. 選擇具有執行查詢成員能力狀態的協同合作。

  4. 分析索引標籤的資料表下,檢視資料表清單及其相關聯的分析規則類型 (彙總分析規則清單分析規則自訂分析規則)。

    注意

    如果您沒有在清單中看到預期的資料表,可能是因為下列原因:

  5. (選用) 若要檢視資料表的結構描述和分析規則控制項,請選取加號圖示 (+) 展開資料表。

  6. 分析區段下,針對分析模式,選取寫入 SQL 程式碼

    注意

    分析區段只會在可接收結果的成員和負責支付查詢運算成本的成員以作用中成員的身分加入協同合作時顯示。

  7. 透過在 SQL 程式碼編輯器中輸入查詢來建置查詢。

    如需支援的 SQL 命令和函數的詳細資訊,請參閱 AWS Clean Rooms SQL 參考。

    您也可以使用下列選項來建置查詢。

    Use an example query

    使用範例查詢

    1. 選取資料表旁的三個垂直點。

    2. 插入編輯器下,選擇範例查詢

      注意

      插入範例查詢會將其附加至編輯器中已有的查詢。

      查詢範例隨即出現。資料表下列出的所有資料表都會包含在查詢中。

    3. 編輯查詢中的預留位置值。

    Insert column names or functions

    插入資料欄名稱或函數

    1. 選取資料欄旁的三個垂直點。

    2. 插入編輯器下,選擇資料欄名稱

    3. 若要手動插入資料欄上允許的函數,

      1. 選取資料欄旁的三個垂直點。

      2. 選取在編輯器中插入

      3. 選取允許的函數名稱 (例如 INNER JOIN、SUM DISTINCT、 SUM或 COUNT)。

    4. Ctrl + Space 在程式碼編輯器中檢視資料表結構描述。

      注意

      可以查詢的成員可以檢視和使用每個已設定資料表關聯中的分割區資料欄。確保分割區資料欄在已設定 AWS Glue 資料表的基礎資料表中標記為分割區資料欄。

    5. 編輯查詢中的預留位置值。

  8. (僅限 Spark 分析引擎) 指定支援的工作者類型工作者數量

    您可以選擇執行個體類型和執行個體數量 (工作者) 來執行 SQL 查詢。

    對於 CR.1X,您最多可以選取 128 個工作者或至少 4 個工作者。

    對於 CR.4X,您最多可以選取 32 個工作者或至少 4 個工作者。

    使用下表來判斷使用案例所需的類型和數量或工作者。

    工作者類型 vCPU 記憶體 (GB) 儲存體 (GB) 工作者數目 無塵室處理單元總數 (CRPU)
    CR.1X (預設) 4 30 100 4 8
    128 256
    CR.4X 16 120 400 4 32
    32 256
    注意

    不同的工作者類型和工作者數量都有相關聯的成本。若要進一步了解 定價,請參閱 AWS Clean Rooms 定價

  9. 針對傳送結果至 ,指定誰可以接收結果。

    注意

    若要接收結果,協同合作成員必須設定為結果接收者,且必須是協同合作中的作用中參與者 (狀態:作用中)

  10. (只能查詢的成員) 預設會選取使用您的預設結果設定核取方塊。如果您想要保留預設結果設定,請保持選取此選項。

    如果您想要為此查詢指定不同的結果設定,請清除使用您的預設結果設定核取方塊,然後選擇下列選項。

    1. 結果格式 (CSVPARQUET)

    2. 結果檔案 (單一多個)

    3. Amazon S3 中的結果目的地

    每個可以接收結果的成員可以在 Amazon S3 中指定不同的結果格式結果檔案和結果目的地。 Amazon S3

  11. (僅限 Spark 分析引擎) 若要指定 Spark 屬性

    1. 展開 Spark 屬性

    2. 選擇新增 Spark 屬性

    3. Spark 屬性對話方塊中,從下拉式清單中選擇屬性名稱,然後輸入

    下表提供每個屬性的定義。

    如需 Spark 屬性的詳細資訊,請參閱 Apache Spark 文件中的 Spark 屬性

    屬性名稱 說明 預設值

    spark.task.maxFailures

    控制任務在任務失敗之前可以失敗的連續次數。需要大於或等於 1 的值。允許重試次數等於此值減去 1。如果任何嘗試成功,失敗計數會重設。不同任務的故障不會累積到此限制。

    4

    spark.sql.files.maxPartitionBytes

    設定從 Parquet、JSON 和 ORC 等檔案型來源讀取時,要封裝至單一分割區的最大位元組數。

    128MB

    spark.hadoop.fs.s3.maxRetries

    設定 Amazon S3 檔案操作的重試嘗試次數上限。

    spark.network.timeout

    設定所有網路互動的預設逾時。若未設定,則覆寫下列逾時設定:

    • spark.storage.blockManagerHeartbeatTimeoutMs

    • spark.shuffle.io.connectionTimeout

    • spark.rpc.askTimeout

    • spark.rpc.lookupTimeout

    待定

    spark.rdd.compress

    指定是否使用 spark.io.compression.codec 壓縮序列化 RDD 分割區。適用於 Java 和 Scala 中的 StorageLevel.MEMORY_ONLY_SER,或 Python 中的 StorageLevel.MEMORY_ONLY。減少儲存空間,但需要額外的 CPU 處理時間。

    FALSE

    spark.shuffle.spill.compress

    指定是否使用 spark.io.compression.codec 壓縮隨機溢出資料。

    TRUE

    spark.sql.adaptive.advisoryPartitionSizeInBytes

    在 spark.sql.adaptive.enabled 為 true 的適應性最佳化期間,設定隨機播放分割區的目標大小,以位元組為單位。在合併小型分割區或分割偏斜分割區時控制分割區大小。

    ( spark.sql.adaptive.shuffle.targetPostShuffleInputSize 的值)

    spark.sql.adaptive.autoBroadcastJoinThreshold

    設定在聯結期間廣播至工作者節點的資料表大小上限,以位元組為單位。僅適用於自適應架構。使用與 spark.sql.autoBroadcastJoinThreshold 相同的預設值。設定為 -1 以停用廣播。

    (無)

    spark.sql.adaptive.coalescePartitions.enabled

    指定是否要根據 spark.sql.adaptive.advisoryPartitionSizeInBytes 來合併連續隨機播放分割區,以最佳化任務大小。需要 spark.sql.adaptive.enabled 才能成立。

    TRUE

    spark.sql.adaptive.coalescePartitions.initialPartitionNum

    在合併之前定義隨機播放分割區的初始數量。同時需要 spark.sql.adaptive.enabled 和 spark.sql.adaptive.coalescePartitions.enabled 為 true。預設為 spark.sql.shuffle.partitions 的值。

    (無)

    spark.sql.adaptive.coalescePartitions.minPartitionSize

    設定合併隨機播放分割區的大小下限,以防止分割區在適應性最佳化期間變得太小。

    1 MB

    spark.sql.adaptive.coalescePartitions.parallelismFirst

    指定是否要在分割區合併期間根據叢集平行處理而非 spark.sql.adaptive.advisoryPartitionSizeInBytes 計算分割區大小。產生的分割區大小小於設定的目標大小,以最大化平行處理。我們建議在忙碌叢集上將此設定為 false,以透過防止過多的小型任務來改善資源使用率。

    TRUE

    spark.sql.adaptive.enabled

    指定是否啟用自適應查詢執行,以在查詢執行期間根據準確的執行時間統計資料重新最佳化查詢計劃。

    TRUE

    spark.sql.adaptive.forceOptimizeSkewedJoin

    指定是否強制啟用 OptimizeSkewedJoin,即使它引入額外的隨機播放。

    FALSE

    spark.sql.adaptive.localShuffleReader.enabled

    指定是否在不需要隨機分割時使用本機隨機讀取器,例如從排序合併聯結轉換為廣播雜湊聯結之後。需要 spark.sql.adaptive.enabled 才能成立。

    TRUE

    spark.sql.adaptive.maxShuffledHashJoinLocalMapThreshold

    設定建置本機雜湊映射的分割區大小上限,以位元組為單位。在下列情況下,將隨機雜湊聯結優先於排序合併聯結:

    • 此值等於或超過 spark.sql.adaptive.advisoryPartitionSizeInBytes

    • 所有分割區大小都在此限制內

    覆寫 spark.sql.join.preferSortMergeJoin 設定。

    0 個位元組

    spark.sql.adaptive.optimizeSkewsInRebalancePartitions.enabled

    指定是否根據 spark.sql.adaptive.advisoryPartitionSizeInBytes 將扭曲隨機播放分割區分割為較小的分割區,以最佳化扭曲隨機播放分割區。需要 spark.sql.adaptive.enabled 才能成立。

    TRUE

    spark.sql.adaptive.rebalancePartitionsSmallPartitionFactor

    定義分割期間合併分割區的大小閾值因素。小於此因素的分割區乘以 spark.sql.adaptive.advisoryPartitionSizeInBytes 會合併。

    0.2

    spark.sql.adaptive.skewJoin.enabled

    指定是否透過分割和選擇性複寫扭曲的分割區來處理隨機聯結中的資料扭曲。適用於排序合併和隨機雜湊聯結。需要 spark.sql.adaptive.enabled 才能成立。

    TRUE

    spark.sql.adaptive.skewJoin.skewedPartitionFactor

    決定決定分割區扭曲的大小因素。當分割區的大小超過以下兩者時,就會扭曲:

    • 此係數乘以中位數分割區大小

    • spark.sql.adaptive.skewJoin.skewedPartitionThresholdInBytes 的值

    5

    spark.sql.adaptive.skewJoin.skewedPartitionThresholdInBytes

    設定識別扭曲分割區的大小閾值,以位元組為單位。當分割區的大小超過以下兩者時,就會扭曲:

    • 此閾值

    • 中位數分割區大小乘以 spark.sql.adaptive.skewJoin.skewedPartitionFactor

    我們建議您設定大於 spark.sql.adaptive.advisoryPartitionSizeInBytes 的值。

    256MB

    spark.sql.autoBroadcastJoinThreshold

    設定在聯結期間廣播至工作者節點的資料表大小上限,以位元組為單位。設定為 -1 以停用廣播。

    10MB

    spark.sql.broadcastTimeout

    控制廣播聯結期間廣播操作的逾時期間,以秒為單位。

    300 秒

    spark.sql.cbo.enabled

    指定是否要為計劃統計資料估算啟用成本型最佳化 (CBO)。

    FALSE

    spark.sql.cbo.joinReorder.dp.star.filter

    指定是否要在成本型聯結列舉期間套用星狀聯結篩選條件啟發式。

    FALSE

    spark.sql.cbo.joinReorder.dp.threshold

    設定動態程式設計演算法中允許的聯結節點數目上限。

    12

    spark.sql.cbo.joinReorder.enabled

    指定是否要在成本型最佳化 (CBO) 中啟用聯結重新排序。

    FALSE

    spark.sql.cbo.planStats.enabled

    指定是否要在邏輯計畫產生期間從目錄擷取資料列計數和資料欄統計資料。

    FALSE

    spark.sql.cbo.starSchemaDetection

    指定是否根據星狀結構描述偵測啟用聯結重新排序。

    FALSE

    spark.sql.crossJoin.enabled

    spark.sql.files.maxPartitionNum

    設定檔案型來源 (Parquet、JSON 和 ORC) 的目標分割檔案分割區數量上限。當初始計數超過此值時,重新擴展分割區。這是建議的目標,而不是保證的限制。

    (無)

    spark.sql.files.maxRecordsPerFile

    設定寫入單一檔案的記錄數目上限。設定為零或負值時不會套用任何限制。

    0

    spark.sql.files.minPartitionNum

    設定檔案型來源 (Parquet、JSON 和 ORC) 的目標分割檔案分割區數量下限。預設為 spark.sql.leafNodeDefaultParallelism。這是建議的目標,而不是保證的限制。

    (無)

    spark.sql.inMemoryColumnarStorage.batchSize

    控制單欄式快取的批次大小。增加大小可改善記憶體使用率和壓縮,但會增加out-of-memory錯誤的風險。

    10000

    spark.sql.inMemoryColumnarStorage.compressed

    指定是否根據資料統計資料自動選取資料欄的壓縮轉碼器。

    TRUE

    spark.sql.inMemoryColumnarStorage.enableVectorizedReader

    指定是否要為單欄式快取啟用向量化讀取。

    TRUE

    spark.sql.legacy.allowHashOnMapType

    指定是否允許對映射類型資料結構執行雜湊操作。此舊版設定可維持與舊版 Spark 版本的映射類型處理的相容性。

    spark.sql.legacy.allowNegativeScaleOfDecimal

    指定是否在十進位類型定義中允許負縮放值。此舊版設定可維持與支援負小數位數擴展之較舊 Spark 版本的相容性。

    spark.sql.legacy.castComplexTypesToString.enabled

    指定是否啟用將複雜類型轉換為字串的舊版行為。維持與舊版 Spark 版本類型轉換規則的相容性。

    spark.sql.legacy.charVarcharAsString

    指定是否將 CHAR 和 VARCHAR 類型視為 STRING 類型。此舊版設定提供與較舊 Spark 版本的字串類型處理相容性。

    spark.sql.legacy.createEmptyCollectionUsingStringType

    指定是否使用字串類型元素建立空集合。此舊版設定可維持與較舊 Spark 版本的集合初始化行為的相容性。

    spark.sql.legacy.exponentLiteralAsDecimal.enabled

    指定是否要將指數常值解譯為十進位類型。此舊版設定可維持與舊版 Spark 版本數值常值處理的相容性。

    spark.sql.legacy.json.allowEmptyString.enabled

    指定是否要在 JSON 處理中允許空字串。此舊版設定可維持與較舊 Spark 版本的 JSON 剖析行為的相容性。

    spark.sql.legacy.parquet.int96RebaseModelRead

    指定是否在讀取 Parquet 檔案時使用舊版 INT96 時間戳記重新基礎模式。此舊版設定可維持與較舊 Spark 版本時間戳記處理的相容性。

    spark.sql.legacy.timeParserPolicy

    控制時間剖析行為以實現回溯相容性。此舊版設定會決定如何從字串剖析時間戳記和日期。

    spark.sql.legacy.typeCoercion.datetimeToString.enabled

    指定是否在將日期時間值轉換為字串時啟用舊版類型強制行為。維持與較舊 Spark 版本日期時間轉換規則的相容性。

    spark.sql.maxSinglePartitionBytes

    設定以位元組為單位的分割區大小上限。規劃器為較大的分割區引進隨機播放操作,以改善平行處理。

    128 公尺

    spark.sql.metadataCacheTTLSeconds

    控制中繼資料快取的time-to-live (TTL)。適用於分割區檔案中繼資料和工作階段目錄快取。需要:

    • 大於零的正值

    • spark.sql.catalogImplementation 設定為 hive

    • spark.sql.hive.filesourcePartitionFileCacheSize 大於零

    • spark.sql.hive.manageFilesourcePartitions 設定為 true

    -1000ms

    spark.sql.optimizer.collapseProjectAlwaysInline

    指定是否要摺疊相鄰投影和內嵌表達式,即使會導致重複。

    FALSE

    spark.sql.optimizer.dynamicPartitionPruning.enabled

    指定是否要為用作聯結索引鍵的分割區資料欄產生述詞。

    TRUE

    spark.sql.optimizer.enableCsvExpressionOptimization

    指定是否要在 SQL 最佳化工具中透過從 csv 操作刪除不必要的資料欄來最佳化 CSV 表達式。

    TRUE

    spark.sql.optimizer.enableJsonExpressionOptimization

    指定是否要透過下列方式最佳化 SQL 最佳化工具中的 JSON 表達式:

    • 從_json 操作刪除不必要的資料欄

    • 簡化從 json 和 到 json 的組合

    • 最佳化 named_struct 操作

    TRUE

    spark.sql.optimizer.excludedRules

    定義要停用的最佳化工具規則,以逗號分隔的規則名稱識別。某些規則無法停用,因為正確性需要它們。最佳化工具會記錄哪些規則已成功停用。

    (無)

    spark.sql.optimizer.runtime.bloomFilter.applicationSideScanSizeThreshold

    設定在應用程式端插入 Bloom 篩選條件所需的最小彙總掃描大小,以位元組為單位。

    10GB

    spark.sql.optimizer.runtime.bloomFilter.creationSideThreshold

    定義在建立端注入 Bloom 篩選條件的大小閾值上限。

    10MB

    spark.sql.optimizer.runtime.bloomFilter.enabled

    指定是否要插入 Bloom 篩選條件,以便在隨機聯結的一側具有選擇性述詞時減少隨機播放資料。

    TRUE

    spark.sql.optimizer.runtime.bloomFilter.expectedNumItems

    定義執行時間 Bloom 篩選條件中預期項目的預設數量。

    1000000

    spark.sql.optimizer.runtime.bloomFilter.maxNumBits

    設定執行時間 Bloom 篩選條件中允許的位元數上限。

    67108864

    spark.sql.optimizer.runtime.bloomFilter.maxNumItems

    設定執行時間 Bloom 篩選條件中允許的預期項目數量上限。

    4000000

    spark.sql.optimizer.runtime.bloomFilter.number.threshold

    限制每個查詢允許的非 DPP 執行時間篩選條件數量上限,以防止out-of-memory錯誤。

    10

    spark.sql.optimizer.runtime.bloomFilter.numBits

    定義執行時間 Bloom 篩選條件中使用的預設位元數。

    8388608

    spark.sql.optimizer.runtime.rowlevelOperationGroupFilter.enabled

    指定是否啟用資料列層級操作的執行時間群組篩選。允許資料來源:

    • 使用資料來源篩選條件刪除整個資料群組 (例如檔案或分割區)

    • 執行執行時間查詢以識別相符的記錄

    • 捨棄不必要的群組,以避免昂貴的重寫

    限制:

    • 並非所有表達式都可以轉換為資料來源篩選條件

    • 有些表達式需要 Spark 評估 (例如子查詢)

    TRUE

    spark.sql.optimizer.runtimeFilter.semiJoinReduction.enabled

    指定是否要插入半聯結,以便在隨機聯結的一側具有選擇性述詞時減少隨機資料。

    FALSE

    spark.sql.parquet.aggregatePushdown

    指定是否將彙總下推至 Parquet 以進行最佳化。支援:

    • 布林值、整數、浮點數和日期類型的 MIN 和 MAX

    • 所有資料類型的 COUNT

    如果任何 Parquet 檔案頁尾缺少統計資料,則擲回例外狀況。

    FALSE

    spark.sql.parquet.columnarReaderBatchSize

    控制每個 Parquet 向量化讀取器批次中的資料列數。選擇平衡效能額外負荷和記憶體用量的值,以防止out-of-memory錯誤。

    4096

    spark.sql.session.timeZone

    定義工作階段時區,以處理字串常值和 Java 物件轉換中的時間戳記。接受:

    • 區域/城市格式的區域型 IDs(例如 America/Los_Angeles)

    • 區域位移,以 (+/-)HH、(+/-)HH:mm 或 (+/-)HH:mm:ss 格式顯示 (例如 -08 或 +01:00)

    • +00:00 的 UTC 或 Z 別名

    (本機時區的值)

    spark.sql.shuffle.partitions

    設定聯結或彙總期間資料隨機播放的預設分割區數量。結構式串流查詢從相同檢查點位置重新啟動之間無法修改。

    200

    spark.sql.shuffledHashJoinFactor

    定義用於判斷隨機雜湊聯結資格的乘數係數。當小邊資料大小乘以此因素時,會選取隨機雜湊聯結,小於大型邊資料大小。

    3

    spark.sql.sources.parallelPartitionDiscovery.threshold

    使用檔案型來源 (Parquet、JSON 和 ORC) 設定驅動程式端檔案清單的路徑數目上限。在分割區探索期間超過 時,會使用個別的 Spark 分散式任務列出檔案。

    32

    spark.sql.statistics.histogram.enabled

    指定是否要在資料欄統計資料運算期間產生等高長長條圖,以改善估算準確度。需要額外的資料表掃描,超過基本資料欄統計資料所需的資料表掃描。

    FALSE

    來源

    https://spark.apache.org/docs/latest/configuration.html#spark-properties

  12. 選擇執行

    注意

    如果可以接收結果的成員尚未設定查詢結果設定,則無法執行查詢。

  13. 檢視結果

    如需詳細資訊,請參閱接收和使用分析結果

  14. 繼續調整參數並再次執行查詢,或選擇 + 按鈕在新索引標籤中啟動新查詢。

注意

AWS Clean Rooms 旨在提供明確的錯誤訊息。如果錯誤訊息沒有足夠的詳細資訊來協助您進行疑難排解,請聯絡客戶團隊。向他們提供錯誤如何發生的描述和錯誤訊息 (包括任何識別符)。如需詳細資訊,請參閱故障診斷 AWS Clean Rooms