Query metadata for staged files¶
Snowflakeは、内部(つまり、Snowflake)ステージ、または外部(Amazon S3、Google Cloud Storage、またはMicrosoft Azure)ステージのファイルにメタデータを自動的に生成します。このメタデータは、次のような仮想列に「格納」され、以下の作業を実行することが可能です。
標準の SELECT ステートメントを使用してクエリする。
COPY INTO <テーブル> を使用して、通常のデータ列とともにテーブルにロードする。ステージングされたデータファイルのクエリに関する一般情報については、 Query data in staged files をご参照ください。
Metadata columns¶
現在、次のメタデータ列をクエリしたり、テーブルにコピーしたりできます。
- METADATA$FILENAME
現在の行が属するステージングされたデータファイルの名前。データファイルへのフルパスを含みます。
- METADATA$FILE_ROW_NUMBER
ステージングされたデータファイルの各記録の行番号。
- METADATA$FILE_CONTENT_KEY
現在の行が属するステージングされたデータファイルのチェックサム。
- METADATA$FILE_LAST_MODIFIED
現在の行が属するステージングされたデータファイルの最終更新タイムスタンプ。TIMESTAMP_NTZ として返されます。
- METADATA$START_SCAN_TIME
ステージングされたデータファイルにある各記録の操作開始タイムスタンプ。TIMESTAMP_LTZ として返されます。
Query limitations¶
メタデータは既存のテーブル行には挿入できません。
メタデータ列は、名前でのみクエリできます。そのため、これらは次のステートメントの出力には含まれません。
Query examples¶
Example 1: Query the metadata columns for a CSV file¶
次の例は、複数の CSV データファイル(同じファイル形式)をステージングし、ファイル内のメタデータ列と通常のデータ列をクエリする方法を示しています。
この例では、ファイルが次の名前を持ち、 macOS またはLinux環境のルートディレクトリにあると想定しています。
/tmp/data1.csvには、2つのレコードが含まれます。/tmp/data2.csvには、2つのレコードが含まれます。
ファイルをステージングおよびクエリするには、次を実行します。
注釈
この例では、ステージングされたファイルのフィールドを正しく解析するために、ファイル形式が必要です。2番目のクエリでは、ファイル形式が省略されているため、 | フィールド区切り文字が無視され、 $1 および $2 の値が返されます。
ただし、ファイル形式がステージ定義に含まれている場合は、 SELECT ステートメントから省略できます。詳細については、次の例をご参照ください。
Example 2: Query the metadata columns for a JSON file¶
この例では、次のオブジェクトを含む JSON データファイルをステージングし、ファイル内のオブジェクトとともにメタデータ列をクエリします。
この例では、ファイルの名前が /tmp/data1.json で、macOS またはLinux環境のルートディレクトリにあると想定しています。
ファイルをステージングおよびクエリするには、次を実行します。
Example 3: Load metadata columns into a table¶
COPY INTO <テーブル> コマンドは、ステージングされたデータファイルからターゲットテーブルへのメタデータのコピーをサポートしています。COPY ステートメントでデータ変換構文(SELECT リスト)を使用します。COPY ステートメントを使用したデータ変換の詳細については、『Transform data during a load 』をご参照ください。
The following example loads the metadata columns and regular data columns from Example 1: Query the metadata columns for a CSV file into a table: