テーブル関数

テーブル関数は、入力行ごとに行のセットを返します。返されるセットには、0、1、または複数の行を含めることができ、各行には1つ以上の列を含めることができます。

たとえば、テーブル関数として適切なものは次のとおりです。

  • 引数として日付を受け入れ、その日に記録的な高温があった都市をリストする行のセットを返す関数。(複数の都市が同じ日に記録的な高温に達する可能性があります。)

  • アカウント番号と日付を受け取り、その日にそのアカウントに請求されたすべての料金を返す関数。(特定の日に複数の料金が請求されている可能性があります。)

これらの各例では、関数は0行(例: その日に記録的な高温がない場合)、1行(1つの都市でその日に記録的な高温に達した場合)、または多数行(多くの都市で記録的な高温に達した場合)を返す可能性があります。

テーブル関数の各入力行は、0個、1個、または複数の引数で構成されます。各引数はスカラー式である必要があります。

テーブル関数は、 SQL ステートメントの FROM 句に表示されます。テーブル関数の呼び出しは通常、 TABLE() でラップされます。たとえば、次のステートメントは、引数として DATE 値をとる record_high_temperatures() という名前のテーブル関数を呼び出します。

SELECT city_name, temperature
    FROM TABLE(record_high_temperatures_for_date('2021-06-27'::DATE))
    ORDER BY city_name;

テーブル関数は、次の2つのサブカテゴリにグループ化できます。

  • 1からNまでの関数。

  • MからNまでの関数。

1からNまでの関数では、各入力行の行はN個の出力行を生成します(Nは0、1、またはそれ以上の場合があります)。上記の例は、1からNまでの関数です。たとえば、関数 RECORD_HIGH_TEMPERATURES_FOR_DATE() が呼び出されて日付が渡されるたびに、関数は行のセットになります。各日付の行は、他の日付の行すべてから独立しています。ほとんどのテーブル関数は1からNまでの関数です。

MからNまでの関数では、M個の入力行のグループがN個の出力行のグループを生成します。Mは1つ以上の行にすることができます。Nは0行、または1つ以上の行にすることができます。たとえば、M行のセットの移動平均を返す関数を作成できます。株価の10日移動平均を知りたいとします。また、関数が少なくとも10行を処理するまで、10日移動平均による出力行を生成せず、平均では異なる月からの行を使用しないとします。この例では、1月の場合、関数には入力に31行(1月には31日があるため)、出力に22行(最初の出力行は1月10日で、最後の出力行は1月31日)あります。この例では、月の長さに応じてMとNの両方が異なります。

テーブル関数は、組み込みまたはユーザー定義にすることができます。組み込みのテーブル関数は システム定義のテーブル関数のリスト にリストされています。ユーザー定義テーブル関数を含むユーザー定義関数の詳細については、 UDFs (ユーザー定義関数) をご参照ください。

テーブル関数は、「表形式関数」と呼ばれることもあります。

このトピックの内容:

システム定義のテーブル関数のリスト

Snowflakeは、次のシステム定義(つまり、組み込み)のテーブル関数を提供します。

サブカテゴリ

関数

注意

データのロード

INFER_SCHEMA

詳細については、 Snowflakeへのデータのロード をご参照ください。

VALIDATE

データ生成

GENERATOR

データ変換

SPLIT_TO_TABLE

STRTOK_SPLIT_TO_TABLE

オブジェクトモデリング

GET_OBJECT_REFERENCES

半構造化クエリ

FLATTEN

詳細については、 半構造化データのクエリ をご参照ください。

クエリ結果

RESULT_SCAN

別の SQL 操作からの出力に対して SQL 操作を実行するために使用できます(例: SHOW)

履歴と使用情報情報スキーマアカウントの使用):

ユーザーログイン

LOGIN_HISTORY , LOGIN_HISTORY_BY_USER

クエリ

QUERY_HISTORY , QUERY_HISTORY_BY_*

ウェアハウスとストレージの使用

DATABASE_STORAGE_USAGE_HISTORY

WAREHOUSE_LOAD_HISTORY

WAREHOUSE_METERING_HISTORY

STAGE_STORAGE_USAGE_HISTORY

列レベルと行レベルのセキュリティ

POLICY_REFERENCES

タグ

TAG_REFERENCES TAG_REFERENCES_WITH_LINEAGE

Information Schemaテーブル関数 . Account Usageテーブル関数

データベースの複製

DATABASE_REFRESH_HISTORY DATABASE_REFRESH_PROGRESS , DATABASE_REFRESH_PROGRESS_BY_JOB REPLICATION_USAGE_HISTORY

詳細については、 複数のアカウント間におけるデータベースの複製 をご参照ください。

データのロードと転送

COPY_HISTORY

DATA_TRANSFER_HISTORY

PIPE_USAGE_HISTORY

VALIDATE_PIPE_LOAD

データクラスタリング(テーブル内)

AUTOMATIC_CLUSTERING_HISTORY

詳細については、 自動クラスタリング をご参照ください。

外部関数

EXTERNAL_FUNCTIONS_HISTORY

詳細については、 外部関数 をご参照ください

外部テーブル

AUTO_REFRESH_REGISTRATION_HISTORY

詳細については、 外部テーブルの使用 をご参照ください

EXTERNAL_TABLE_FILES

EXTERNAL_TABLE_FILE_REGISTRATION_HISTORY

マテリアライズドビューのメンテナンス

MATERIALIZED_VIEW_REFRESH_HISTORY

詳細については、 マテリアライズドビューの使用 をご参照ください。

SCIM メンテナンス

REST_EVENT_HISTORY

詳細については、 SCIM を使用した監査 をご参照ください。

検索最適化のメンテナンス

SEARCH_OPTIMIZATION_HISTORY

詳細については、 検索最適化サービスの使用 をご参照ください。

タスクのメンテナンス

TASK_DEPENDENTS

詳細については、 タスクを使用したスケジュールでの SQL ステートメントの実行 をご参照ください。

TASK_HISTORY

構文

SELECT ...
  FROM [ <input_table> [ [AS] <alias_1> ] ,
         [ LATERAL ]
       ]
       TABLE( <table_function>( [ <arg_1> [, ... ] ] ) ) [ [ AS ] <alias_2> ];

関数固有の構文については、個々のシステム定義のテーブル関数のドキュメントをご参照ください。

使用上の注意

  • テーブル関数は、 LATERAL 構造を使用して行のセットに適用することもできます。

  • テーブル式の使用を有効にするために、Snowflakeは、クエリおよびサブクエリの FROM 句でテーブル式の ANSI/ISO 標準構文をサポートします。この構文は、式が単一の行ではなく行のコレクションを返すことを示すために使用されます。

  • この ANSI/ISO 構文は、 SELECT リストの FROM 句のみで有効です。他のコンテキストでは、コレクションサブクエリの仕様からこれらのキーワードと括弧を省略できません。