Partager via


plug-in infer_storage_schema

S’applique à : ✅Microsoft Fabric✅Azure Data Explorer

Ce plug-in déduit le schéma des données externes et le retourne en tant que chaîne de schéma CSL. La chaîne peut être utilisée lors de la création de tables externes. Le plug-in est appelé avec l’opérateur evaluate .

Authentification et autorisation

Dans les propriétés de la requête, vous spécifiez des chaîne de connexion de stockage à accéder. Chaque chaîne de connexion de stockage spécifie la méthode d’autorisation à utiliser pour accéder au stockage. Selon la méthode d’autorisation, le principal peut avoir besoin d’autorisations sur le stockage externe pour effectuer l’inférence de schéma.

Le tableau suivant répertorie les méthodes d’authentification prises en charge et toutes les autorisations requises par type de stockage.

Méthode d'authentification Stockage Blob Azure / Data Lake Storage Gen2 Data Lake Storage Gen 1
Emprunt d'identité Lecteur des données blob du stockage Lecteur
Jeton d’accès partagé (SAS) Liste + Lecture Cette méthode d’authentification n’est pas prise en charge dans Gen1.
Jeton d’accès Microsoft Entra
Clé d’accès au compte de stockage Cette méthode d’authentification n’est pas prise en charge dans Gen1.

Syntaxe

evaluateinfer_storage_schema( Options )

En savoir plus sur les conventions de syntaxe.

Paramètres

Nom Type Requise Description
Options dynamic ✔️ Conteneur de propriétés spécifiant les propriétés de la requête.

Propriétés prises en charge de la requête

Nom Type Requise Description
StorageContainers dynamic ✔️ Tableau de chaîne de connexion de stockage qui représentent l’URI de préfixe pour les artefacts de données stockés.
DataFormat string ✔️ Un des formats de données pris en charge.
FileExtension string Si elle est spécifiée, la fonction analyse uniquement les fichiers se terminant par cette extension de fichier. La spécification de l’extension peut accélérer le processus ou éliminer les problèmes de lecture des données.
FileNamePrefix string Si elle est spécifiée, la fonction analyse uniquement les fichiers à partir de ce préfixe. La spécification du préfixe peut accélérer le processus.
Mode string Stratégie d’inférence de schéma. Valeur : any, last, all. La fonction déduit le schéma de données du premier fichier trouvé, du dernier fichier écrit ou de tous les fichiers respectivement. La valeur par défaut est last.
InferenceOptions dynamic Autres options d’inférence. Options valides : UseFirstRowAsHeader pour les formats de fichiers délimités. Par exemple, 'InferenceOptions': {'UseFirstRowAsHeader': true}.

Retours

Le infer_storage_schema plug-in retourne une table de résultats unique contenant une seule ligne/colonne contenant une chaîne de schéma CSL.

Remarque

  • Les clés secrètes d’URI du conteneur de stockage doivent disposer des autorisations nécessaires à la liste en plus de la lecture.
  • La stratégie d’inférence de schéma « all » est une opération très « coûteuse », car elle implique la lecture de tous les artefacts trouvés et la fusion de leur schéma.
  • Certains types retournés peuvent ne pas être les types réels en raison d’une estimation de type incorrecte (ou, à la suite d’un processus de fusion de schéma). C’est pourquoi vous devez examiner attentivement le résultat avant de créer une table externe.

Exemple

let options = dynamic({
  'StorageContainers': [
    h@'https://storageaccount.blob.core.windows.net/MobileEvents;secretKey'
  ],
  'FileExtension': '.parquet',
  'FileNamePrefix': 'part-',
  'DataFormat': 'parquet'
});
evaluate infer_storage_schema(options)

Sortie

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

Utilisez le schéma retourné dans la définition de table externe :

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