Partager via


plug-in infer_storage_schema_with_suggestions

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

Ce infer_storage_schema_with_suggestions plug-in déduit le schéma des données externes et retourne un objet JSON. Pour chaque colonne, l’objet fournit un type déduit, un type recommandé et la transformation de mappage recommandée. Le type et le mappage recommandés sont fournis par la logique de suggestion qui détermine le type optimal à l’aide de la logique suivante :

  • Colonnes d’identité : si le type déduit d’une colonne est long et que le nom de colonne se termine par id, le type suggéré est string car il fournit une indexation optimisée pour les colonnes d’identité où les filtres d’égalité sont courants.
  • Colonnes datetime Unix : si le type déduit d’une colonne est long et que l’une des transformations de mappage unix-time à datetime produit une valeur datetime valide, le type suggéré est datetime et le mappage suggéré ApplicableTransformationMapping est celui qui a produit une valeur datetime valide.

Le plug-in est appelé avec l’opérateur evaluate . Pour obtenir le schéma de table qui utilise le schéma déduit pour Créer et modifier Stockage Azure tables externes sans suggestions, utilisez le plug-in infer_storage_schema.

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_with_suggestions( 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 pour l’ingestion
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_with_suggestions plug-in retourne une table de résultats unique contenant une seule ligne/colonne contenant une chaîne JSON.

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 les utiliser.

Exemple

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

Exemples de données d’entrée

    {
        "source": "DataExplorer",
        "created_at": "2022-04-10 15:47:57",
        "author_id": 739144091473215488,
        "time_millisec":1547083647000
    }

Sortie

{
  "Columns": [
    {
      "OriginalColumn": {
        "Name": "source",
        "CslType": {
          "type": "string",
          "IsNumeric": false,
          "IsSummable": false
        }
      },
      "RecommendedColumn": {
        "Name": "source",
        "CslType": {
          "type": "string",
          "IsNumeric": false,
          "IsSummable": false
        }
      },
      "ApplicableTransformationMapping": "None"
    },
    {
      "OriginalColumn": {
        "Name": "created_at",
        "CslType": {
          "type": "datetime",
          "IsNumeric": false,
          "IsSummable": true
        }
      },
      "RecommendedColumn": {
        "Name": "created_at",
        "CslType": {
          "type": "datetime",
          "IsNumeric": false,
          "IsSummable": true
        }
      },
      "ApplicableTransformationMapping": "None"
    },
    {
      "OriginalColumn": {
        "Name": "author_id",
        "CslType": {
          "type": "long",
          "IsNumeric": true,
          "IsSummable": true
        }
      },
      "RecommendedColumn": {
        "Name": "author_id",
        "CslType": {
          "type": "string",
          "IsNumeric": false,
          "IsSummable": false
        }
      },
      "ApplicableTransformationMapping": "None"
    },
    {
      "OriginalColumn": {
        "Name": "time_millisec",
        "CslType": {
          "type": "long",
          "IsNumeric": true,
          "IsSummable": true
        }
      },
      "RecommendedColumn": {
        "Name": "time_millisec",
        "CslType": {
          "type": "datetime",
          "IsNumeric": false,
          "IsSummable": true
        }
      },
      "ApplicableTransformationMapping": "DateTimeFromUnixMilliseconds"
    }
  ]
}