次の方法で共有


Azure Storage でデルタ外部テーブルを作成および変更する

適用対象: ✅Microsoft FabricAzure データ エクスプローラー

この記事のコマンドを使用して、コマンドの実行元のデータベースにデルタ 外部テーブル を作成または変更できます。 差分外部テーブルは、Azure Blob Storage、Azure Data Lake Store Gen1、または Azure Data Lake Store Gen2 にある Delta Lake テーブル データを参照します。

Note

テーブルが存在する場合、.create コマンドは失敗し、エラーが表示されます。 既存のテーブルを変更するには、.create-or-alter または .alter を使用します。

外部デルタ テーブルに対するクエリを高速化するには、 Query アクセラレーション ポリシーを参照してください。

アクセス許可

.createには、少なくとも Database User アクセス許可が必要であり、.alterには少なくとも Table 管理者アクセス許可が必要です。

マネージド ID 認証を使用して外部テーブルを .create-or-alter するには、 AllDatabasesAdmin アクセス許可が必要です。

構文

(.create | .alter | .create-or-alter) externaltableTableName [(Schema)] kind=delta(StorageConnectionString) [with(Property [, ...]] )]

構文規則について詳しく知る。

パラメーター

件名 タイプ Required 説明
TableName string ✔️ エンティティ名規則に準拠する外部テーブル名。 外部テーブルは、同じデータベース内の通常のテーブルと同じ名前にすることはできません。
[スキーマ] string 省略可能な外部データ スキーマは、1 つ以上の列名と data 型のコンマ区切りリストです各項目は次の形式に従います: ColumnName:ColumnType。 指定しない場合は、最新のデルタ テーブル バージョンに基づいてデルタ ログから自動的に推論されます。
StorageConnectionString string ✔️ デルタ テーブルのルート フォルダー パス (資格情報を含む)。 Azure Blob Storage BLOB コンテナー、Azure Data Lake Gen 2 ファイル システム、または Azure Data Lake Gen 1 コンテナーを指すことができます。 外部テーブルのストレージの種類は、指定された接続文字列によって決まります。 storage 接続文字列を参照してください。
プロパティ string PropertyName=PropertyValue の形式のキーと値のプロパティのペア。 オプションのプロパティを参照してください

Note

  • カスタム スキーマが指定されている場合、互換性のない型を持つ既存の列または列には null 値が入力されます。
  • パーティションに関する情報は、デルタ ログから自動的に推論されます。 パーティション列は、仮想列としてテーブル スキーマに追加されます。 詳細については、「 Virtual 列」を参照してください。
  • パス形式は、パーティション情報から自動的に推論されます。 詳細については、「 Path 形式」を参照してください。

ヒント

カスタム スキーマの場合は、 infer_storage_schema プラグインを使用して、外部ファイルの内容に基づいてスキーマを推論できます。

認証と権限承認

外部テーブルにアクセスするための認証方法は、作成時に提供される接続文字列に基づいており、テーブルへのアクセスに必要なアクセス許可は認証方法によって異なります。

サポートされている認証方法は、 Azure Storage 外部テーブルでサポートされているものと同じです。

省略可能なプロパティ

プロパティ タイプ 説明
folder string テーブルのフォルダー
docString string テーブルを文書化する文字列
compressed bool エクスポート シナリオにのみ関連します。
true に設定すると、compressionType プロパティで指定された形式でデータがエクスポートされます。 読み取りパスの場合、圧縮は自動的に検出されます。
compressionType string エクスポート シナリオにのみ関連します。
エクスポートされたファイルの圧縮の種類。 Parquet 以外のファイルの場合は、gzip のみが許可されます。 Parquet ファイルの場合、指定できる値には、gzipsnappylz4_rawbrotli、および zstdが含まれます。 既定値は gzipです。 読み取りパスの場合、圧縮の種類が自動的に検出されます。
namePrefix string 設定されている場合は、ファイルのプレフィックスを指定します。 書き込み操作では、すべてのファイルがこのプレフィックスを使用して書き込まれます。 読み取り操作では、このプレフィックスを持つファイルだけが読み取られます。
fileExtension string 設定されている場合は、ファイルの拡張子を指定します。 書き込み時には、ファイル名の末尾がこのサフィックスになります。 読み取り時には、このファイル拡張子を持つファイルのみが読み取られます。
encoding string テキストのエンコード方法を指定します。UTF8NoBOM (既定) または UTF8BOM
dryRun bool 設定した場合、外部テーブル定義は永続化されません。 このオプションは、特に filesPreview または sampleUris パラメータと組み合わせて、外部テーブル定義を検証するのに便利です。

Note

外部デルタ テーブルは、パーティション情報と必要に応じてスキーマを推論するために、作成時にアクセスされます。 テーブル定義が有効であり、ストレージにアクセスできることを確認します。

推論されたスキーマを使用してデルタ外部テーブルを作成または変更する

次の外部テーブルでは、スキーマは最新の差分テーブル バージョンから自動的に推論されます。

.create-or-alter external table ExternalTable  
kind=delta 
( 
   h@'https://storageaccount.blob.core.windows.net/container1;secretKey'
) 

カスタム スキーマを使用してデルタ外部テーブルを作成する

次の外部テーブルでは、カスタム スキーマが指定され、デルタ テーブルのスキーマがオーバーライドされます。 後で、カスタム スキーマを最新のデルタ テーブル バージョンに基づくスキーマに置き換える必要がある場合は、前の例のように、スキーマを指定せずに .alter | .create-or-alter コマンドを実行します。

.create external table ExternalTable (Timestamp:datetime, x:long, s:string) 
kind=delta
( 
   h@'abfss://filesystem@storageaccount.dfs.core.windows.net/path;secretKey'
)

制限事項

  • タイム トラベルはサポートされていません。 最新の差分テーブル バージョンのみが使用されます。