注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Foundry のほかのコンピューティングワークフローとは異なり、Furnace SQL ではテーブル形式の出力に複数の SQL 定義を保持できます。定義には、単一の書き込みクエリ、またはトランザクションブロック内の複数のステートメントが含まれます。1つの定義がアクティブに指定されます。
アクティブな定義は、スケジュールに従って、またはオンデマンドでテーブルが再ビルドされるたびに実行される SQL です。別の定義をアクティブにすると、以降の再ビルドで使用される定義が変わりますが、その定義がすぐに実行されるわけではありません。
出力に関連付けられた定義を表示するには、次の手順に従います。
各定義には、SQL の操作タイプ、最終実行、クエリID、SQL が表示されます。アクティブな定義は、アクティブラベルで識別できます。

定義のオプションメニューでは、次の操作ができます。

書き込みクエリを実行すると、出力ごとに定義が作成されます。出力の最初の定義がアクティブになります。CREATE OR REPLACE TABLE を除き、以降の書き込みでは既存の定義が保持され、定義が追加されます。adhoc ヒントを使用しない限り、新しい定義がアクティブになります。CREATE OR REPLACE TABLE クエリは、再作成された出力の既存の定義を置き換えます。
adhoc SQL ヒントを使用すると、アクティブな定義を変更せずに、1回限りの書き込みを実行し、追加の定義として保持できます。
日次の入力から新しい注文を受け取る、/Sales/Orders にある Iceberg テーブルを例にします。このテーブルのアクティブな定義は、スケジュールに従って、またはオンデマンドでテーブルがビルドされるたびに、最新の行を追加します。
Copied!1 2 3INSERT INTO `/Sales/Orders` SELECT order_id, customer_id, order_date, total FROM `/Sources/Orders daily`;
後から、出力に含まれていない注文を含む過去の入力が見つかったとします。アドホック定義としてバックフィルを実行します。
Copied!1 2 3 4 5/*+ adhoc */ INSERT INTO `/Sales/Orders` SELECT order_id, customer_id, order_date, total FROM `/Sources/Orders history` WHERE order_date < DATE '2026-01-01';
過去の行はすぐに追加され、バックフィルの SQL は追加の定義として保持されます。日次クエリはアクティブなままなので、以降のスケジュールおよびオンデマンドのビルドでは、引き続き /Sources/Orders daily から行が追加されます。
1時間ごとのセンサーデータを受け取る、/Manufacturing/Sensor readings にある Iceberg テーブルを例にします。このテーブルのアクティブな定義は次のとおりです。
Copied!1 2 3INSERT INTO `/Manufacturing/Sensor readings` SELECT recorded_at, sensor_id, reading FROM `/Sources/Sensor readings hourly`;
今後書き込まれるデータファイルに zstd 圧縮を使用するには、プロパティの変更をアドホック定義として実行します。
Copied!1 2 3 4 5/*+ adhoc */ ALTER TABLE `/Manufacturing/Sensor readings` SET TBLPROPERTIES ( 'write.parquet.compression-codec' = 'zstd' );
ALTER TABLE ステートメントをアクティブにすることなく、プロパティが1回更新されます。既存のデータファイルは変更されませんが、以降にアクティブな定義を実行して生成されるデータファイルには、zstd 圧縮が使用されます。
Data Lineage には、非アクティブな定義やアドホック定義を含め、保持されているすべての SQL 定義が参照する入力が反映されます。そのため、アクティブな定義で参照されていない入力でも、リネージに表示される場合があります。