查询和任务历史记录视图和函数:新列¶
在当前的 Snowflake 版本中,查询和任务历史记录视图和函数的输出包括新列。受影响的视图和函数包括:
以下 Account Usage 视图:
以下 Information Schema 表函数:
这些视图和函数的输出包括以下新列:
列名称 |
数据类型 |
描述 |
---|---|---|
|
TEXT |
根据 SQL 语句的规范化文本计算的哈希值。 |
|
NUMBER |
|
|
TEXT |
字面量参数化后的查询文本的哈希值 |
|
NUMBER |
|
如果您之前定义了一个视图,该视图 从任何这些视图中选择所有列 (SELECT *),则查询该视图将返回错误。您必须使用 CREATE OR REPLACE VIEW 命令重新创建视图。
例如,假设您定义了一个视图,该视图从 TASK_HISTORY 视图中选择了所有列:
CREATE OR REPLACE VIEW my_task_history
AS SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.TASK_HISTORY;
- 之前:
查询视图(本示例中的
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;
此外,如果创建的表与这些视图之一具有相同的列(例如,通过使用 CREATE TABLE ...LIKE SNOWFLAKE.ACCOUNT_USAGE.TASK_HISTORY),并且要将行从该视图复制到表中,则必须将新列添加到表中。使用 ALTER TABLE ...ADD COLUMN 命令将已添加到视图中的相同列添加到表中。
参考号:1147