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 と 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