Snowflake

Snowflake にデータをアップロードする場合、他のアダプターの場合よりも優れたプロセス効率が得られます。すべてのデータが 1 つのファイルとして生成され、ディスクにすべてが書き込まれてから Snowflake に転送されるのではなく、データがチャンク単位で並列にアップロードされるからです。

ビューのキャッシュをロードするクエリを実行するにあたって、キャッシュデータベースが Snowflake であるとします。キャッシュロードプロセスは以下のように実行されます。

  1. サーバーがクエリを実行して、キャッシュデータベースに保存する必要がある行を取得し始めます。結果の最初の数行を取得するとすぐに、それらをデータファイルに書き込み始めます。このファイルは圧縮されてディスクに書き込まれます。

  2. サーバーは、ファイルに 500,000 行を書き込むと、ファイルを閉じて、Snowflake に送信し始めます。同時に、後続の行を別のファイルに書き込みます。

    500,000 は、データソースの [Read & Write] タブの [Batch insert size (rows)] フィールドのデフォルト値であり、変更可能です。この値を増やすと、アップロードプロセスの並列性が低下することに注意してください。

  3. サーバーが別のデータファイルへの書き込みを終了すると (つまりファイルがバッチ挿入サイズに到達すると)、先に生成されていたファイルの転送が完了していなくても、Snowflake にファイルを転送し始めます。デフォルトでは、サーバーはクエリあたり最大 4 つのファイルを同時に転送します。ファイルの数がこの制限に到達すると、サーバーはデータファイルに行を書き込み続けますが、それ以上ファイルを転送しません。

    この制限は、VQL シェルで次のコマンドを実行することによって変更できます。

    SET 'com.denodo.vdb.util.tablemanagement.sql.insertion.DFInsertWorker.snowflake.maxParallelUploads'
        = '<new limit per query>';
    
  4. データファイルは、送信後に削除されます。

  5. サーバーは、すべてのファイルをアップロードした後、Snowflake にそれらのファイルを読み込むように指示します。