Udostępnij za pośrednictwem


wtyczka infer_storage_schema_with_suggestions

Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer

Ta infer_storage_schema_with_suggestions wtyczka wywnioskuje schemat danych zewnętrznych i zwraca obiekt JSON. Dla każdej kolumny obiekt zawiera wnioskowany typ, zalecany typ i zalecane przekształcenie mapowania. Zalecany typ i mapowanie są dostarczane przez logikę sugestii, która określa optymalny typ przy użyciu następującej logiki:

  • Kolumny tożsamości: jeśli wywnioskowany typ kolumny to long , a nazwa kolumny kończy się ciągiem id, sugerowanym typem jest string to, że zapewnia zoptymalizowane indeksowanie kolumn tożsamości, w których są wspólne filtry równości.
  • Kolumny daty/godziny systemu Unix: jeśli wywnioskowany typ kolumny to long i jeden z przekształceń mapowania daty/godziny na datę/godzinę powoduje wygenerowanie prawidłowej wartości daty/godziny, sugerowany typ jest datetime i sugerowane ApplicableTransformationMapping mapowanie jest tym, który wygenerował prawidłową wartość daty/godziny.

Wtyczka jest wywoływana z operatorem evaluate . Aby uzyskać schemat tabeli, który używa wywnioskowanych schematów dla tworzenia i modyfikowania tabel zewnętrznych usługi Azure Storage bez sugestii, użyj wtyczki infer_storage_schema .

Uwierzytelnianie i autoryzacja

We właściwościach żądania należy określić parametry połączenia magazynu, aby uzyskać dostęp. Każdy parametry połączenia magazynu określa metodę autoryzacji, która ma być używana do uzyskiwania dostępu do magazynu. W zależności od metody autoryzacji podmiot zabezpieczeń może wymagać udzielenia uprawnień do magazynu zewnętrznego w celu wykonania wnioskowania schematu.

W poniższej tabeli wymieniono obsługiwane metody uwierzytelniania i wszelkie wymagane uprawnienia według typu magazynu.

Metoda uwierzytelniania Azure Blob Storage / Data Lake Storage Gen2 Data Lake Storage Gen1
Personifikacja Czytelnik danych obiektu BLOB usługi Storage Czytelnik
Token dostępu współdzielonego (SAS) Lista i odczyt Ta metoda uwierzytelniania nie jest obsługiwana w usłudze Gen1.
Token dostępu firmy Microsoft Entra
Klucz dostępu do konta magazynu Ta metoda uwierzytelniania nie jest obsługiwana w usłudze Gen1.

Składnia

evaluateinfer_storage_schema_with_suggestions( Opcje )

Dowiedz się więcej na temat konwencji składni.

Parametry

Nazwisko Type Wymagania opis
Opcje dynamic ✔️ Torba właściwości określająca właściwości żądania.

Obsługiwane właściwości żądania

Nazwisko Type Wymagania opis
StorageContainers dynamic ✔️ Tablica parametry połączenia magazynu reprezentująca identyfikator URI prefiksu dla przechowywanych artefaktów danych.
DataFormat string ✔️ Jeden z obsługiwanych formatów danych obsługiwanych do pozyskiwania
Rozszerzenie pliku string Jeśli zostanie określony, funkcja skanuje tylko pliki kończące się tym rozszerzeniem pliku. Określenie rozszerzenia może przyspieszyć proces lub wyeliminować problemy z odczytywaniem danych.
FileNamePrefix string Jeśli zostanie określony, funkcja skanuje tylko pliki rozpoczynające się od tego prefiksu. Określenie prefiksu może przyspieszyć proces.
Tryb string Strategia wnioskowania schematu. Wartość: any, last, all. Funkcja wywnioskuje schemat danych z pierwszego znalezionego pliku, z ostatniego zapisanego pliku lub ze wszystkich plików odpowiednio. Domyślna wartość to last.
WnioskowanieOpcje dynamic Więcej opcji wnioskowania. Prawidłowe opcje: UseFirstRowAsHeader dla rozdzielonych formatów plików. Przykład: 'InferenceOptions': {'UseFirstRowAsHeader': true}.

Zwraca

Wtyczka infer_storage_schema_with_suggestions zwraca pojedynczą tabelę wyników zawierającą pojedynczy wiersz/kolumnę zawierającą ciąg JSON.

Uwaga

  • Klucze tajne identyfikatora URI kontenera magazynu muszą mieć uprawnienia dla listy oprócz opcji Odczyt.
  • Strategia wnioskowania schematu "wszystko" jest bardzo "kosztowną" operacją, ponieważ oznacza odczytywanie ze wszystkich znalezionych artefaktów i scalanie ich schematu.
  • Niektóre zwracane typy mogą nie być rzeczywiste w wyniku błędnego zgadywania typu (lub w wyniku procesu scalania schematu). Dlatego należy dokładnie przejrzeć wynik przed ich użyciem.

Przykład

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)

Przykładowe dane wejściowe

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

Wyjście

{
  "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"
    }
  ]
}