COLUMNS 뷰(여러 스키마): 새 열(보류 중)¶
이 동작 변경 번들이 활성화되면 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 및 :code:`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) |
+-----------+-----------------+
유일한 예외는 텍스트 문자열의 데이터 타입<label-character-datatypes>`입니다. 텍스트 문자열의 표준 Snowflake 데이터 타입은 VARCHAR이지만 :code:`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) |
+-------------+-----------+-----------------+
이 동작 변경은 :code:`SELECT *`를 사용하여 이러한 뷰를 쿼리하고 고정된 수의 열에 의존하는 모든 스크립트 또는 데이터 로딩 프로세스에 영향을 줍니다. 중단을 방지하려면 스크립트와 애플리케이션을 검토하세요. ACCOUNT_USAGE.COLUMNS, ORGANIZATION_USAGE.COLUMNS 및 INFORMATION_SCHEMA.COLUMNS에 대한 모든 쿼리를 업데이트하여 :code:`SELECT *`를 사용하는 대신 필요한 정확한 열을 지정합니다.
참조: 2061