infer_storage_schema プラグイン
このプラグインは、外部データのスキーマを推論し、CSL スキーマ文字列として返します。 この文字列は、外部テーブルを作成するときに使用できます。 このプラグインは、evaluate
演算子を使用して呼び出されます。
認証と権限承認
要求のプロパティでアクセスするストレージ接続文字列を指定します。 各ストレージ 接続文字列は、ストレージへのアクセスに使用する承認方法を指定します。 承認方法によっては、スキーマ推論を実行するために、プリンシパルに外部ストレージに対するアクセス許可を付与する必要がある場合があります。
次の表に、サポートされている認証方法と、ストレージの種類別に必要なアクセス許可を示します。
認証方法 | Azure Blob Storage / Data Lake Storage Gen2 | Data Lake Storage Gen1 |
---|---|---|
偽装 | ストレージ BLOB データ閲覧者 | Reader |
Shared Access (SAS) トークン | リスト + 読み取り | この認証方法は Gen1 ではサポートされていません。 |
Microsoft Entra アクセス トークン | ||
ストレージ アカウント アクセス キー | この認証方法は Gen1 ではサポートされていません。 |
構文
evaluate
infer_storage_schema(
オプション )
構文規則について詳しく知る。
パラメーター
件名 | タイプ | Required | 内容 |
---|---|---|---|
[オプション] | dynamic |
✔️ | 要求の プロパティを指定するプロパティ バッグ。 |
要求のサポートされているプロパティ
名前 | タイプ | Required | 説明 |
---|---|---|---|
StorageContainers | dynamic |
✔️ | 格納されているデータ成果物のプレフィックス URI を表す storage 接続文字列s の配列。 |
DataFormat | string |
✔️ | サポートされている データ形式の 1 つ。 |
FileExtension | string |
指定した場合、この関数は、このファイル拡張子で終わるファイルのみをスキャンします。 拡張機能を指定すると、プロセスが高速化されたり、データ読み取りの問題が解消されたりする可能性があります。 | |
FileNamePrefix | string |
指定した場合、この関数は、このプレフィックスで始まるファイルのみをスキャンします。 プレフィックスを指定すると、プロセスが高速化される可能性があります。 | |
Mode | string |
スキーマ推論戦略。 値: any 、 last 、 all 。 この関数は、最初に見つかったファイル、最後に書き込まれたファイル、またはすべてのファイルから、それぞれデータ スキーマを推論します。 既定値は last です。 |
|
InferenceOptions | dynamic |
その他の推論オプション。 有効なオプション: 区切りファイル形式の UseFirstRowAsHeader 。 例えば 'InferenceOptions': {'UseFirstRowAsHeader': true} 。 |
返品
infer_storage_schema
プラグインは、CSL スキーマ文字列を含む 1 つの行/列を含む 1 つの結果テーブルを返します。
Note
- ストレージ コンテナー URI シークレット キーには、読み取りだけでなくリストのアクセス許可が必要です。
- スキーマ推論戦略 'all' は、見つかったすべての成果物からの読み取りとそのスキーマのマージを意味する、非常に「コストの高い」操作です。
- 返される型の中には、型の推測が間違っている (またはスキーマ マージ プロセスの結果として) 実際の型ではない場合があります。 このため、外部テーブルを作成する前に、結果を注意深く確認してください。
例
let options = dynamic({
'StorageContainers': [
h@'https://storageaccount.blob.core.windows.net/MobileEvents;secretKey'
],
'FileExtension': '.parquet',
'FileNamePrefix': 'part-',
'DataFormat': 'parquet'
});
evaluate infer_storage_schema(options)
出力
CslSchema |
---|
app_id:string、user_id:long、event_time:datetime、country:string、city:string、device_type:string、device_vendor:string、ad_network:string、campaign:string、site_id:string、event_type:string、event_name:string、organic:string、days_from_install:int、revenue:real |
外部テーブル定義で返されたスキーマを使用します。
.create external table MobileEvents(
app_id:string, user_id:long, event_time:datetime, country:string, city:string, device_type:string, device_vendor:string, ad_network:string, campaign:string, site_id:string, event_type:string, event_name:string, organic:string, days_from_install:int, revenue:real
)
kind=blob
partition by (dt:datetime = bin(event_time, 1d), app:string = app_id)
pathformat = ('app=' app '/dt=' datetime_pattern('yyyyMMdd', dt))
dataformat = parquet
(
h@'https://storageaccount.blob.core.windows.net/MovileEvents;secretKey'
)