z值將是無效的,而不是收集統計數據

z值是無效的,錯誤不收集統計數據。重新排序的列的表你想優化內第一個32列上。

寫的mathan.pillai

去年發表在:2022年5月10日

問題

你正試圖優化δz值表,收到一個錯誤不收集統計數據的列。

AnalysisException: z值在[col1, col2]將是無效的,因為我們目前不為這些列收集統計數據。
刪除

信息

請回顧z值(多維聚簇)(AWS|Azure|GCP)有關數據跳過和z值的更多信息。

導致

三角洲湖收集統計數據中定義的前32列你的表模式。如果你試圖z值的列在第一個32列,沒有統計數據收集的那些列。

解決方案

重新排序的列在你的表,所以你試圖z順序列在第一個32列在你的桌子上。

您可以使用一個ALTER TABLE語句重新排序的列。

% sql ALTER TABLE table_name變化(列)col_name col_name data_type[評論col_comment] [colA_name後的第一個|]

例如,該語句將列<列名稱>表中的第一列。

% sql ALTER TABLE < delta-table-name >改變列<列名稱> <列名稱> <數據類型>

再計算統計數據後重新排序表中的列。

% scala com.databricks.sql.transaction.tahoe進口。_進口org.apache.spark.sql.catalyst。TableIdentifier com.databricks.sql.transaction.tahoe.stats進口。StatisticsCollection val表= " <表名稱>”val deltaLog = deltaLog。forTable(火花,TableIdentifier(表))StatisticsCollection。驗算(火花,deltaLog)

重新運行z值放在桌子上,它應該成功完成。