次の方法で共有


infer_storage_schema プラグイン

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

このプラグインは、外部データのスキーマを推論し、CSL スキーマ文字列として返します。 この文字列は、外部テーブルを作成するときに使用できます。 このプラグインは、evaluate 演算子を使用して呼び出されます。

認証と権限承認

要求のプロパティでアクセスするストレージ接続文字列を指定します。 各ストレージ 接続文字列は、ストレージへのアクセスに使用する承認方法を指定します。 承認方法によっては、スキーマ推論を実行するために、プリンシパルに外部ストレージに対するアクセス許可を付与する必要がある場合があります。

次の表に、サポートされている認証方法と、ストレージの種類別に必要なアクセス許可を示します。

認証方法 Azure Blob Storage / Data Lake Storage Gen2 Data Lake Storage Gen1
偽装 ストレージ BLOB データ閲覧者 Reader
Shared Access (SAS) トークン リスト + 読み取り この認証方法は Gen1 ではサポートされていません。
Microsoft Entra アクセス トークン
ストレージ アカウント アクセス キー この認証方法は Gen1 ではサポートされていません。

構文

evaluateinfer_storage_schema( オプション )

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

パラメーター

件名 タイプ Required 内容
[オプション] dynamic ✔️ 要求の プロパティを指定するプロパティ バッグ

要求のサポートされているプロパティ

名前 タイプ Required 説明
StorageContainers dynamic ✔️ 格納されているデータ成果物のプレフィックス URI を表す storage 接続文字列s の配列。
DataFormat string ✔️ サポートされている データ形式の 1 つ
FileExtension string 指定した場合、この関数は、このファイル拡張子で終わるファイルのみをスキャンします。 拡張機能を指定すると、プロセスが高速化されたり、データ読み取りの問題が解消されたりする可能性があります。
FileNamePrefix string 指定した場合、この関数は、このプレフィックスで始まるファイルのみをスキャンします。 プレフィックスを指定すると、プロセスが高速化される可能性があります。
Mode string スキーマ推論戦略。 値: anylastall。 この関数は、最初に見つかったファイル、最後に書き込まれたファイル、またはすべてのファイルから、それぞれデータ スキーマを推論します。 既定値は 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'
)