Azure Storage でデルタ外部テーブルを作成および変更する
この記事のコマンドを使用して、コマンドの実行元のデータベースにデルタ 外部テーブル を作成または変更できます。 差分外部テーブルは、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
) external
table
TableName [(
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 |
テーブルを文書化する文字列 |
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'
)
制限事項
- タイム トラベルはサポートされていません。 最新の差分テーブル バージョンのみが使用されます。