PIPE オブジェクト

PIPE オブジェクトは、Snowpipe Streamingのサーバー側処理レイヤーです。すべてのストリーミング取り込みは、ターゲットテーブルにデータをコミットする前に、スキーマ検証、オプションの進行中のデータ変換、オプションの事前クラスタリングを処理するパイプを通過します。

PIPE オブジェクトは以下の機能を提供します。

  • 同時進行の変換:COPY コマンド変換構文を使用して、取り込み中に行をフィルターし、列を並べ替え、型をキャストし、式を適用します。これにより、データを取り込む際にデータクレンジングや整形を行うことが可能になり、別途の ETL ステップは不要です。

  • 事前クラスタリング :取り込み中にテーブルクラスタリングキーに基づいてデータを並べ替えし、クエリのパフォーマンスを最適化します。

  • サーバー側のスキーマ検証:コミットする前に、パイプで定義されたスキーマに対して受信データを検証します。

  • テーブル機能のサポート :定義されたクラスタリングキー、 DEFAULT 値列、および AUTOINCREMENT (または IDENTITY )列を使用して、テーブルに取り込みます。

    Snowpipe Streaming用の PIPE オブジェクト

セットアップを迅速に行うため、Snowflakeはすべてのテーブルに対して自動的に デフォルトのパイプ を作成します。デフォルトのパイプは手動での DDL を必要とせずに取り込みを処理します。変換や事前クラスタリングを必要とする高度なユースケースでは、カスタムの名前付きパイプを作成できます。詳細については、 CREATE PIPE をご参照ください。

デフォルトパイプ

Snowflakeは、すべてのターゲットテーブルに対してデフォルトパイプを提供します。デフォルトのパイプは、ターゲットテーブルに対して最初にパイプ情報またはオープンチャネル呼び出しが成功した後にオンデマンドで作成されます。これにより、 CREATEPIPEDDL ステートメントを手動で実行することなく、すぐにデータのストリーミングを開始できます。

  • オンデマンド作成:これらの呼び出しのいずれかによってパイプがインスタンス化された後にのみ、パイプを表示または説明することができます( SHOW PIPES または DESCRIBE PIPE を使用)

  • 命名規則: <TABLE_NAME>-STREAMING (例: MY_TABLE-STREAMING

  • Snowflakeの包括的な管理:デフォルトのパイプでは CREATE 、 ALTER または DROP を実行できません。

  • 可視性:SHOW PIPESDESCRIBE PIPE 、および SHOW CHANNELS を使用してデフォルトのパイプを検査できます。デフォルトのパイプは ACCOUNT_USAGE.PIPESACCOUNT_USAGE.METERING_HISTORY 、および ORGANIZATION_USAGE.PIPES ビューにも含まれています。

デフォルトのパイプには、次の制限があります。

  • 変換なし:デフォルトのパイプは基になるcopyステートメントで MATCH_BY_COLUMN_NAME を使用します。特定のデータ変換はサポートしていません。

  • 事前クラスタリングなし:デフォルトのパイプは、ターゲットテーブルの事前クラスタリングをサポートしていません。

ワークフローで変換や事前クラスタリングが必要な場合は、独自の名前付きパイプを作成します。詳細については、 CREATE PIPE をご参照ください。

Snowpipe Streaming SDK または RESTAPIを構成するとき、クライアント構成でデフォルトのパイプ名を参照して、ストリーミングを開始できます。詳細については、 チュートリアル: Snowpipe Streaming高性能アーキテクチャ SDK の利用を開始する および チュートリアル: cURL および JWT を使用してSnowpipe Streaming REST API の利用を開始する をご参照ください。

インジェスチョン中のデータの事前クラスタリング

Snowpipe Streamingは、インジェスチョン中にインフライトデータをクラスターできるため、ターゲットテーブルでのクエリパフォーマンスが向上します。この機能は、取り込み中にデータがコミットされる前にデータを直接ソートします。

事前クラスタリングを使用するには、ターゲットテーブルにクラスタリングキーが定義されている必要があります。この機能を有効にするには、Snowpipe Streamingパイプを作成または交換する際に、 COPYINTO ステートメント内のパラメーター CLUSTER_AT_INGEST_TIMETRUE に設定します。

詳細については、 :ref:`CLUSTER_AT_INGEST_TIME <label-copy_into_table_copyoptions> ` をご参照ください。

重要

事前クラスタリング機能を使用する場合は、宛先テーブルで自動クラスタリング機能を無効にしないでください。自動クラスタリングを無効にすると、時間の経過とともにクエリのパフォーマンスが低下する可能性があります。