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

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

Note

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

アクセス許可

.createなくともデータベース ユーザーのアクセス許可を.alter必要とし、少なくともテーブル 管理のアクセス許可を必要とするには。

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

構文

(.create.alter | .create-or-alter | ) externaltableTableName [(Schema)] kind=(deltaStorageConnectionString) [with(プロパティ [, ...])]

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

パラメーター

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

注意

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

ヒント

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

認証と承認

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

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

省略可能なプロパティ

プロパティ Type 説明
folder string テーブルのフォルダー
docString string テーブルを文書化する文字列
namePrefix string 設定した場合、ファイルのプレフィックスを示します。 書き込み操作では、すべてのファイルがこのプレフィックスを使用して書き込まれます。 読み取り操作では、このプレフィックスを持つファイルだけが読み取られます。
fileExtension string 設定すると、ファイルの拡張子を示します。 書き込み時には、ファイル名の末尾がこのサフィックスになります。 読み取り時には、このファイル拡張子を持つファイルのみが読み取られます。
encoding string テキストのエンコード方法を示します: UTF8NoBOM (既定値) または UTF8BOM
dryRun bool 設定した場合、外部テーブル定義は保持されません。 このオプションは、特に filesPreview または sampleUris パラメータと組み合わせて、外部テーブル定義を検証するのに便利です。

注意

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

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

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

.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'
)

制限事項

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