COLUMNS view (multiple schemas): New column (Pending)¶
启用此行为变更捆绑包后,Account Usage、Organization Usage 和 Information Schema 中的 COLUMNS 视图包括以下新列:
列名称 |
数据类型 |
描述 |
|---|---|---|
|
VARCHAR |
创建表时或上次修改列时为该列指定的数据类型别名或同义词。 对于在此行为变更之前创建且在行为变更后未更改的表中的列,此列中的值为 NULL。 |
data_type 列显示该列的标准 Snowflake 数据类型。data_type_alias 列显示创建表时或使用 ALTER TABLE table ALTER COLUMN column SET DATA TYPE data_type 语句更改列时,为列指定的原始数据类型名称。
例如,NUMBER 是标准的 Snowflake 数据类型。BIGINT 与 NUMBER 同义。如果您指定 BIGINT 作为列的数据类型,则 COLUMNS 视图中的 data_type 列将显示该列的 NUMBER,但 data_type_alias 列显示 BIGINT:
CREATE TABLE test_data_type_alias (b BIGINT);
SELECT data_type, data_type_alias
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'TEST_DATA_TYPE_ALIAS';
+-----------+-----------------+
| DATA_TYPE | DATA_TYPE_ALIAS |
|-----------+-----------------|
| NUMBER | BIGINT |
+-----------+-----------------+
当为列指定标准的、不合格的 Snowflake 数据类型时,data_type 和 data_type_alias 列中的值是相同的。例如,如果指定 NUMBER 为列的数据类型,则 COLUMNS 视图中的 data_type 和 data_type_alias 都显示 NUMBER 为数据类型:
CREATE TABLE test_data_type_alias_2 (n NUMBER);
SELECT data_type, data_type_alias
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'TEST_DATA_TYPE_ALIAS_2';
+-----------+-----------------+
| DATA_TYPE | DATA_TYPE_ALIAS |
|-----------+-----------------|
| NUMBER | NUMBER |
+-----------+-----------------+
data_type_alias 列显示为数据类型指定的确切名称。例如,以下语句创建了一个具有完全限定 NUMBER 列的表:
CREATE TABLE test_data_type_alias_3 (n NUMBER(16, 2));
SELECT data_type, data_type_alias
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'TEST_DATA_TYPE_ALIAS_3';
+-----------+-----------------+
| DATA_TYPE | DATA_TYPE_ALIAS |
|-----------+-----------------|
| NUMBER | NUMBER(16, 2) |
+-----------+-----------------+
唯一的例外是 文本字符串的数据类型。文本字符串的标准 Snowflake 数据类型为 VARCHAR,但 data_type 列显示这些列的 TEXT:
CREATE TABLE test_data_type_alias_4 (
c CHAR,
s STRING,
t TEXT,
v VARCHAR,
vq VARCHAR(25));
SELECT column_name, data_type, data_type_alias
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'TEST_DATA_TYPE_ALIAS_4'
ORDER BY column_name;
+-------------+-----------+-----------------+
| COLUMN_NAME | DATA_TYPE | DATA_TYPE_ALIAS |
|-------------+-----------+-----------------|
| C | TEXT | CHAR |
| S | TEXT | STRING |
| T | TEXT | TEXT |
| V | TEXT | VARCHAR |
| VQ | TEXT | VARCHAR(25) |
+-------------+-----------+-----------------+
这种行为变更会影响使用 SELECT * 查询这些视图,并且依赖固定数量的列的任何脚本或数据加载进程。为避免中断,请查看您的脚本和应用程序。更新 ACCOUNT_USAGE.COLUMNS、ORGANIZATION_USAGE.COLUMNS 和 INFORMATION_SCHEMA.COLUMNS 上的所有查询,以指定所需的确切列,而不是使用 SELECT *。
参考:2061