dbt Projects on Snowflake の制限、要件、および考慮事項¶
|sf-dbt|を使用する前に、要件、考慮事項、および制限事項を確認してください。
dbtプロジェクト構成の制限、要件、および考慮事項¶
次の要件、考慮事項、および制限は、dbt Projects on Snowflake でサポートされているdbtプロジェクト構成に適用されます。
Only dbt Core projects are supported. dbt Cloud projects aren't supported. When you migrate an existing dbt Core project to Snowflake, it must be compatible with supported dbt Core versions.
Snowflakeワークスペースの各dbtプロジェクトフォルダーには、Snowflakeの プロジェクトのためのターゲットとなる
warehouse、database、schemaおよびroleを指定するprofiles.ymlファイルが含まれている必要があります。そのtypeはsnowflake. に設定する必要があります。dbtにはaccountおよびuserが必要ですが、dbtプロジェクトは現在のアカウントとユーザーコンテキストをもとにSnowflakeで実行されるため、これらは空または任意の文字列のままにすることができます。ワークスペース内のdbtプロジェクトでは、フォルダー構造に20,000個を超えるファイルを含めることはできません。この制限には、
target/dbt_packages/logsディレクトリを含むdbtプロジェクトディレクトリとサブディレクトリ内のすべてのファイルが含まれます。ワークスペース内からdbtプロジェクトが実行されると、そこにログファイルが保存されます。環境変数(例:
{{ env_var ('MY_ENV_VAR') }})は、dbtプロジェクトオブジェクトを実行する場合はサポートされません。代わりに、プロジェクト変数(例:--vars)を使用します。詳細については、 プロジェクト変数 をご参照ください。Serverless tasks can't be used to execute dbt project objects. When you create a task that executes the EXECUTE DBT PROJECT command, you must specify a user-managed warehouse.
同じdbtプロジェクトオブジェクトに対して、複数のEXECUTE DBT PROJECTコマンドを同時に実行することはサポートされていません。これはモデルセレクター(:code:`EXECUTE DBT PROJECT foo ARGS='--select model1'`や:code:`EXECUTE DBT PROJECT foo ARGS='--select model2'`など)を使用する場合でも同様です。これを行うと、予期しない内部エラーメッセージが表示される可能性があります。指定されたdbtプロジェクトオブジェクトに対して一度に1つのEXECUTE DBT PROJECTコマンドのみを実行してください。複数のコマンドを並行して実行する必要がある場合は、同時実行コマンドごとに個別のdbtプロジェクトオブジェクトを作成します。
dbt内でのスレッド構成の使用(例:
threads: 8)はサポートされており、推奨されています。この同時実行の制限は、同じdbtプロジェクトオブジェクトに対して複数のEXECUTE DBT PROJECT呼び出しを同時に実行する場合にのみ適用されます。
ストアドプロシージャの制限、要件、および考慮事項¶
ストアドプロシージャを使用して EXECUTEDBTPROJECT を呼び出す場合、呼び出し元権限ストアドプロシージャを使用します。詳細については、 CREATE PROCEDURE および ストアドプロシージャの作成 をご参照ください。
テレメトリー、ログ、トレースの制限、要件、および考慮事項¶
次の要件、考慮事項、および制限は、Snowflake上のdbtのテレメトリ、ログ、およびトレースに適用されます。
dbt Projects on Snowflake のワークスペースは標準出力(stdout)が動的にストリームされず、標準出力はコマンド完了時にのみ表示可能です。
ログとトレースを表示するには、dbtプロジェクトオブジェクトの LOG_LEVEL および TRACE_LEVEL を設定する必要があります。詳細については、 Snowflakeでのdbtプロジェクトのアクセス制御 および dbt Projects on Snowflake をモニターする をご参照ください。
デフォルトでは、Snowflakeはデフォルトの SNOWFLAKE.TELEMETRY.EVENTS テーブルでテレメトリーを収集します。アカウントのイベントテーブルとしてカスタムイベントテーブルが設定されている場合、テレメトリーデータはそこに収集されます。Enterprise Editionアカウントを使用する場合、イベントテーブルを作成してテレメトリーデータを収集し、dbtプロジェクトオブジェクトがデプロイされたデータベースに関連付けることができます。詳細については、 イベントテーブルの概要 をご参照ください。
クエリ履歴DAGの制限¶
クエリ履歴DAGでは、 manifest.json および run_results.json アーティファクトの両方が可視化をレンダリングするために必要です。dbtプロジェクトオブジェクトの実行が run_results.json の生成前に失敗した場合、 Query Details の DAG タブでは代わりに「利用可能なデータはありません」が表示されます。
run_results.json の生成を妨げるファストフェイル実行の一般的な原因には、次が含まれます。
dbtプロジェクトオブジェクトを実行するには権限が不十分。
無効なプロジェクト構成(例:欠落している、または形式に誤りがある
dbt_project.ymlファイル)。
dbt depsでインストールされていない依存関係が欠落している。
To resolve this, check the dbt Output section in the Query Details tab for error messages, fix the underlying issue, redeploy the dbt project object, and re-execute it. For more information about monitoring dbt project object executions, see クエリ履歴DAGの表示.