Query and task history views and functions: New columns¶
在当前的 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