查询和任务历史记录视图和函数:新列

注意

此行为变更在 2023_06 捆绑包中。

有关捆绑包的当前状态,请参阅 捆绑包历史记录

在当前的 Snowflake 版本中,查询和任务历史记录视图和函数的输出包括新列。受影响的视图和函数包括:

这些视图和函数的输出包括以下新列:

列名称

数据类型

描述

query_hash

TEXT

根据 SQL 语句的规范化文本计算的哈希值。

query_hash_version

NUMBER

query_hash 列中的哈希版本。

query_parameterized_hash

TEXT

字面量参数化后的查询文本的哈希值

query_parameterized_hash_version

NUMBER

query_parameterized_hash 列中的哈希版本。

如果您之前定义了一个视图,该视图 从任何这些视图中选择所有列 (SELECT *),则查询该视图将返回错误。您必须使用 CREATE OR REPLACE VIEW 命令重新创建视图。

例如,假设您定义了一个视图,该视图从 TASK_HISTORY 视图中选择了所有列:

CREATE OR REPLACE VIEW my_task_history
  AS SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.TASK_HISTORY;
Copy
之前:

查询视图(本示例中的 my_task_history)会返回该视图的结果。

现在:

查询视图(本示例中的 my_task_history)会返回有关视图中列数的错误:

View definition for MY_DB.MY_SCHEMA.MY_TASK_HISTORY' declared 22 column(s),
but view query produces 27 column(s).

CREATE VIEW 的使用说明 中所述,如果视图从基础表或视图中选择所有列,则在将新列添加到基础表或视图中时,视图不会自动更新。查询视图将返回与列相关的错误。

要防止此错误,必须重新创建视图。例如,要重新创建上面示例中的视图,并选中特定列(以避免将来因添加列而出现问题):

CREATE OR REPLACE VIEW my_task_history
  AS SELECT query_text, completed_time FROM SNOWFLAKE.ACCOUNT_USAGE.TASK_HISTORY;
Copy

此外,如果创建的表与这些视图之一具有相同的列(例如,通过使用 CREATE TABLE ...LIKE SNOWFLAKE.ACCOUNT_USAGE.TASK_HISTORY),并且要将行从该视图复制到表中,则必须将新列添加到表中。使用 ALTER TABLE ...ADD COLUMN 命令将已添加到视图中的相同列添加到表中。

参考号:1147

语言: 中文