注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
仮想テーブルを使用すると、対応するデータプラットフォームのテーブルに対して、データを Foundry のデータセットに保存せずにクエリを実行できます。
仮想テーブルは、Foundry の外部にあるソースシステムのテーブルへのポインターとして機能します。仮想テーブルは、基盤となるソースシステムやストレージ形式を抽象化するため、異なるソースシステムのデータをシームレスに組み合わせたワークフローを構築できます。また、Foundry に保存されたデータセットと仮想テーブルを組み合わせることで、データを 1 か所に集約する必要のない柔軟なアーキテクチャを実現できます。Foundry のデータ変換の出力として新しい仮想テーブルを作成することもできるため、ストレージはすべて外部に置き、Foundry がオーケストレーション、セキュリティなどの機能を担うワークフローを実現できます。

仮想テーブルは、次の要素によって定義されます。
Foundry の他のリソースと同様に、仮想テーブルは Foundry のセキュリティと権限モデルによって管理され、さまざまな Foundry アプリケーションで開いたり使用したりできます。
以下のソースは仮想テーブルに対応しています。接続の設定方法や対応する機能の詳細については、ソースのドキュメントを参照してください。
| ソース | ステータス | 対応する形式 | 手動登録 | 自動登録 |
|---|---|---|---|---|
| Amazon S3 | 🟢 一般提供 | Avro ↗, Delta ↗, Iceberg ↗, Parquet ↗ | ✔️ | |
| OneLake および Azure Data Lake Storage Gen2(Azure Blob Storage) | 🟢 一般提供 | Avro ↗, Delta ↗, Iceberg ↗, Parquet ↗ | ✔️ | |
| BigQuery | 🟢 一般提供 | テーブル、ビュー、実体化ビュー | ✔️ | ✔️ |
| Databricks | 🟢 一般提供 | テーブル、ビュー、実体化ビュー | ✔️ | ✔️ |
| Foundry | 🟡 ベータ版 | マネージド Iceberg のみ | ✔️ | |
| Google Cloud Storage | 🟢 一般提供 | Avro ↗, Delta ↗, Iceberg ↗, Parquet ↗ | ✔️ | カタログが設定されている場合、Iceberg テーブルで ✔️ |
| Snowflake | 🟢 一般提供 | テーブル、ビュー、実体化ビュー | ✔️ | ✔️ |
Iceberg カタログは、存在する Iceberg テーブルと、各テーブルのファイルが現在保存されている場所を記録します。Apache Iceberg テーブルを元にした仮想テーブルを読み込むために必要です。Iceberg テーブルについて詳しくはこちら。仮想テーブルが対応するカタログは、使用するソースによって異なります。ソース以外の列見出しはすべて、Foundry が対応する Iceberg カタログの名前です。各カタログの設定方法やソースの Iceberg テーブルの使用方法の詳細については、ソースのドキュメントを参照してください。
| ソース | AWS Glue | Horizon Catalog | Lakehouse | Object Storage | Polaris | Unity Catalog |
|---|---|---|---|---|---|---|
| Amazon S3 | 🟢 一般提供 | 🔴 利用不可 | 🔴 利用不可 | 🟢 一般提供 | 🟢 一般提供 | 🟡 レガシー:Databricks ソースの使用を推奨します。 |
| Databricks | - | - | - | - | - | 🟢 一般提供 |
| Google Cloud Storage | 🔴 利用不可 | 🔴 利用不可 | 🟢 一般提供 | 🟢 一般提供 | 🔴 利用不可 | 🔴 利用不可 |
| OneLake および Azure Data Lake Storage Gen2(Azure Blob Storage) | 🔴 利用不可 | 🔴 利用不可 | 🔴 利用不可 | 🟢 一般提供 | 🟢 一般提供 | 🟡 レガシー:Databricks ソースの使用を推奨します。 |
| Snowflake | - | 🟢 一般提供 | - | - | - | - |
仮想テーブルは、以下のアプリケーションおよびワークフローで入力として利用でき、Pipeline Builder と Code Repositories では出力としても利用できます。
| 対応するアプリケーション | 対応するワークフロー | 非対応 |
|---|---|---|
| Data Connection | ソースの設定 仮想テーブルの登録 | Agent を使用した接続 |
| Contour | Contour での分析 | データセットとして保存 |
| オントロジー | Ontology Manager によるオブジェクトの作成 Pipeline Builder によるオブジェクトの作成 | |
| Data Lineage | Foundry リネージの表示 | |
| Pipeline Builder | パイプライン入力 パイプライン出力 スナップショットビルド インクリメンタル(差分処理)ビルド(追加のみ) 外部パイプライン(コンピュートプッシュダウン) | ストリーミングビルド 高速パイプライン |
| Code Repositories | Python トランスフォーム Java トランスフォーム SQL トランスフォーム スナップショットビルド インクリメンタルビルド(追加のみ) コンピュートプッシュダウン | |
| 観測可能性 | 仮想テーブルに対応するヘルスチェック Pipeline Builder のデータが満たすべき条件 Code Repositories のデータが満たすべき条件 | シングルノードトランスフォームでは、on_error='FAIL' を設定してデータが満たすべき条件を満たさなかった場合にジョブを中止する機能は、仮想テーブル出力では利用できません。ただし、仮想テーブル入力、Foundry が管理する Iceberg テーブル、および Spark トランスフォーム全般では利用できます。 |
| Code Workspaces | JupyterLab® VS Code |
ソースの種類によっては、これらの機能のすべてに対応していない場合があります。詳細については、ソース別のドキュメントを参照してください。Code Repositories で仮想テーブルを使用する場合のソースの設定方法について詳しくはこちら。
一般に、仮想テーブルは、以下のいずれかの方法で Foundry の一般的なワークフローのほとんどに利用できます。
以下の対応表は、仮想テーブルで利用可能な主な機能を、データソースとテーブルの種類別にまとめたものです。ソース固有の制限や詳細機能を含むすべての詳細については、ソース別のドキュメントを参照してください。
| ソース | テーブルの種類 | 機能 | Foundry コンピュート | コンピュートプッシュダウン* |
|---|---|---|---|---|
| BigQuery | テーブル、ビュー、実体化ビュー、その他 | ✅ 読み取り ✅ 書き込み | ✅ Python:シングルノード ✅ Python: Spark ❌ Pipeline Builder:シングルノード ✅ Pipeline Builder: Spark | ✅ Python (Ibis) ❌ Pipeline Builder |
| Databricks | 外部 Delta、マネージド Iceberg | ✅ 読み取り ✅ 書き込み | ✅ Python:シングルノード ✅ Python: Spark ❌ Pipeline Builder:シングルノード ✅ Pipeline Builder: Spark | ✅ Python (PySpark) ✅ Pipeline Builder |
| Databricks | マネージド Delta | ✅ 読み取り ❌ 書き込み | ✅ Python:シングルノード ✅ Python: Spark ❌ Pipeline Builder:シングルノード ✅ Pipeline Builder: Spark | ✅ Python (PySpark) ✅ Pipeline Builder |
| Databricks | ビュー、実体化ビュー、その他 | ✅ 読み取り ❌ 書き込み | ✅ Python:シングルノード ✅ Python: Spark ❌ Pipeline Builder:シングルノード ✅ Pipeline Builder: Spark | ✅ Python (PySpark) ✅ Pipeline Builder |
| Snowflake | テーブル、ビュー、実体化ビュー、その他 | ✅ 読み取り ✅ 書き込み | ✅ Python:シングルノード ✅ Python: Spark ❌ Pipeline Builder:シングルノード ✅ Pipeline Builder: Spark | ✅ Python (Snowpark) ✅ Pipeline Builder |
| Snowflake | マネージド Iceberg | ✅ 読み取り ❌ 書き込み | ❌ Python:シングルノード ✅ Python: Spark ❌ Pipeline Builder:シングルノード ✅ Pipeline Builder: Spark | ✅ Python (Snowpark) ✅ Pipeline Builder |
| AWS S3 | Parquet, Avro, CSV, Delta | ✅ 読み取り ✅ 書き込み | ❌ Python ❌ Pipeline Builder | 該当なし |
| Azure ADLS | Parquet, Avro, CSV, Delta | ✅ 読み取り ✅ 書き込み | ❌ Python ❌ Pipeline Builder | 該当なし |
| Google Cloud Storage | Parquet, Avro, CSV, Delta | ✅ 読み取り ✅ 書き込み | ❌ Python ❌ Pipeline Builder | 該当なし |
| Google Cloud Storage | Lakehouse カタログ内の Iceberg テーブル | ✅ 読み取り ✅ 書き込み | ✅ Python ✅ Pipeline Builder | 該当なし |
* コンピュートプッシュダウンとは、ソースシステムのネイティブコンピュートエンジンを使用することを指します。
仮想テーブルに対応するソースは、Data Connection アプリケーションで設定します。使用するソースを選択し、ソース設定の仮想テーブルタブに移動します。ソースのドキュメントと、そこに記載されている仮想テーブルを使用するための要件に従ってください。

対応するすべてのソースで、ソースシステムの個々のテーブルを Foundry に登録できます。表形式のソースでは、複数の仮想テーブルをまとめて一括登録することもできます。一部のソースは、さらに 自動登録 に対応しています。この機能は、設定された資格情報でアクセスできるソース内のすべてのテーブルを、指定したプロジェクトに定期的に登録します。
仮想テーブルを登録するには、ソースの仮想テーブルタブで仮想テーブルを作成を選択します。利用可能なテーブルを参照し、登録するテーブルを選択します。別の場所を選択しない限り、仮想テーブルはソースのデフォルト出力フォルダーに作成されます。

Databricks、BigQuery、Snowflake などの表形式のソースを使用する場合、複数の仮想テーブルをまとめて一括登録できます。まず、左側のパネルから外部テーブルを 1 つ以上選択します。右側のパネルで、新しい仮想テーブルの保存先を変更したり、名前を更新したりできます。Foundry で仮想テーブルの名前を変更しても、ソース内のテーブル名は変更されません。

自動登録を有効にすると、仮想テーブルが自動的に作成される新しい Foundry プロジェクトを作成します。このプロジェクト内のフォルダー階層はソースシステムの構造を反映し、ソースに新しいテーブルが作成されると定期的に更新されます。ソースのテーブルが削除されても、関連する仮想テーブルはプロジェクト内で自動削除されませんが、それらにアクセスしてもデータは読み込まれません。
自動登録を有効にするには、Foundry のプロジェクト作成権限が必要です。

このプロジェクトは Foundry によって管理され、ユーザーはその中のリソースを手動で作成または更新できません。このプロジェクトに登録された仮想テーブルは、他のプロジェクトにインポートしてワークフローの開発に使用できます。
自動登録を有効にすると、プロジェクトの権限とアクセスを設定できます。これらは後から、プロジェクトの所有者がアクセスサイドバーで管理できます。

Databricks ソースの自動登録を設定する場合、絞り込みに使用するテーブルタグのリストを指定できます。Databricks の TABLE_TAGS ↗ システムテーブルで、これらのタグが 1 つ以上設定されているテーブルのみが登録されます。

Code Repositories で仮想テーブルを使用する場合、それらを使用するトランスフォームは、ソースに設定されたエグレスポリシーに基づいてネットワークエグレスを自動的に取得します。ソースに設定された資格情報は、ソースへの接続に使用できるように必ずなります。これは、外部トランスフォームと同様の動作です。
ソースで以下の設定を有効にする必要があります。
ソースを設定してコードリポジトリにインポートすると、transforms.api.Input を使用して、データセットと同じように仮想テーブルを Python トランスフォームの入力として使用できます。インクリメンタル計算にはデータセットと一貫した API が用意されており、一部のソースで利用できます。詳細については、ソース別のドキュメントを参照してください。
一般に、仮想テーブルは Python、SQL、Java トランスフォームの入力として利用できます。新しい仮想テーブルをトランスフォームの出力として作成できるのは Python トランスフォームのみで、SQL と Java トランスフォームは既存の仮想テーブルへの書き込みに対応しています。
Python トランスフォームによる新しい仮想テーブルの作成について詳しくはこちら。
データセットプレビューの詳細パネルで、仮想テーブルに関する主な情報を確認できます。
これには以下が含まれます。

更新検出機能は、仮想テーブルを監視し、ソースシステム内のテーブルの変更を検出します。これにより、仮想テーブルをパイプラインやオブジェクトなどの依存リソースのビルドトリガーとして使用できます。
更新検出は、外部で管理され、Foundry に登録されているテーブルである仮想テーブル入力を対象としています。仮想テーブル出力(Foundry パイプラインによって作成されるもの)については、Foundry がパイプラインのビルド情報を使用して更新を自動的に追跡するため、更新検出は不要です。
更新検出が有効な場合、Foundry は定期的にソースシステムをポーリングし、テーブルの更新を確認します。ソースのテーブル形式がバージョン管理に対応している場合(たとえば、Delta や Iceberg)、Foundry は変更を検出し、必要な場合にのみ下流のビルドをトリガーできます。バージョン管理に対応していない場合、すべてのポーリングが更新の可能性があるものとして扱われるため、不要な下流のビルドが発生する場合があります。
仮想テーブルがバージョン管理に対応しているかどうかは、仮想テーブルの詳細を表示することで確認できます。
更新検出は、下流のビルドがトリガーされるタイミングのみを制御します。実行されるビルドがスナップショットかインクリメンタルビルドかは決定しません。バージョン管理に対応するソースは、インクリメンタル(追加のみ)ビルドにも対応できる場合があります。この場合、Foundry は前回のビルド以降に追加された特定の行を識別し、テーブル全体を再処理するのではなく、その新しいデータのみを処理します。仮想テーブルのインクリメンタル処理は現在、追加のみの変更に限られ、Delta の Change Data Feed ↗ や Iceberg の Incremental Reads ↗ の有効化など、ソース固有の追加の前提条件があります。詳細については、ソース別のドキュメントを参照してください。ソースがバージョン管理に対応していない場合、その仮想テーブルを使用する下流のパイプラインは、トリガーされるたびにテーブル全体を再処理するスナップショットビルドを使用する必要があります。
更新検出は、仮想テーブル入力が、下流のテーブル、データセット、オブジェクトなどの下流リソースの作成に使用されている場合にのみ利用できます。
仮想テーブル入力の更新検出を有効にするには、以下の手順に従ってください。
有効にすると、仮想テーブル入力を下流のテーブルやデータセットのスケジュールトリガーとして使用できます。仮想テーブルを元にしたオブジェクトは、ソースの更新が検出されると自動的にインデックスが再作成されます。
Ontology Manager で、仮想テーブルを直接元にしたオブジェクトを設定できます。
元となる仮想テーブルが Foundry の外部で更新される場合、オブジェクトがソースシステムから定期的に更新を受け取れるように、仮想テーブルの更新検出を有効にしてください。
仮想テーブルを使用するか Foundry データセットに同期するかは、アーキテクチャの目標と、対応する対象ワークフローによって異なります。ワークフローごとに適切な統合パターンを検討することを推奨します。この 2 つのアプローチは、互いを補完するように併用できます。
以下に、仮想テーブルの使用とデータセットへのデータ同期について、考えられる利点、欠点、制限事項を検討する際に留意すべき点を示します。
仮想テーブルには、以下のようなさまざまな利点があります。
仮想テーブルがすべての状況で最適な選択肢となるわけではありません。以下のような点を考慮する必要があります。
仮想テーブルには、以下の制限事項があります。
use_external_systems デコレーターを使用するトランスフォームは、現在、仮想テーブルに対応していません。ソースベースの external_transforms に切り替えるか、トランスフォームを、仮想テーブルを入力として使用するものと use_external_systems デコレーターを使用するものに分割してください。仮想テーブルに対して直接実行されるクエリでは、コンピュートが Foundry とソースシステムの間で分担される場合があります。具体的な動作は、クエリと、ソースシステムが対応するプッシュダウン計算の範囲によって異なります。詳細については、ソース別のドキュメントを参照してください。