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值放在桌子上,它应该成功完成。

这篇文章有用吗?