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
evaluate
infer_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'
)