Поделиться через


Подключаемый модуль infer_storage_schema

Область применения: ✅Microsoft Fabric✅Azure Data Explorer

Этот подключаемый модуль определяет схему внешних данных и возвращает ее в виде строки схемы CSL. Строку можно использовать при создании внешних таблиц. Подключаемый модуль вызывается оператором evaluate .

Проверка подлинности и авторизация

В свойствах запроса необходимо указать строка подключения хранилища для доступа. Каждый строка подключения хранилища задает метод авторизации, используемый для доступа к хранилищу. В зависимости от метода авторизации субъекту может потребоваться предоставить разрешения на внешнее хранилище для выполнения вывода схемы.

В следующей таблице перечислены поддерживаемые методы проверки подлинности и все необходимые разрешения по типу хранилища.

Authentication method Хранилище BLOB-объектов Azure / Data Lake Storage 2-го поколения Azure Data Lake Storage 1-го поколения
Олицетворение Читатель данных больших двоичных объектов хранилища Читатель
Маркер общего доступа (SAS) Список и чтение Этот метод проверки подлинности не поддерживается в 1-м поколениях.
Маркер доступа Microsoft Entra
Ключ доступа к учетной записи хранения Этот метод проверки подлинности не поддерживается в 1-м поколениях.

Синтаксис

evaluateinfer_storage_schema( Параметры )

Дополнительные сведения о соглашениях синтаксиса.

Параметры

Имя (название) Type Обязательно Описание
Параметры dynamic ✔️ Контейнер свойств, указывающий свойства запроса.

Поддерживаемые свойства запроса

Имя. Type Обязательно Описание
StorageContainers dynamic ✔️ Массив строка подключения хранилища, представляющий URI префикса для сохраненных артефактов данных.
DataFormat string ✔️ Один из поддерживаемых форматов данных.
FileExtension string Если задано, функция сканирует только файлы, заканчивающиеся этим расширением. Указание расширения может ускорить процесс или устранить проблемы с чтением данных.
FileNamePrefix string Если задано, функция сканирует только файлы, начиная с этого префикса. Указание префикса может ускорить процесс.
Режим string Стратегия вывода схемы. Значение: any, lastall. Функция выводит схему данных из первого найденного файла, из последнего записанного файла или из всех файлов соответственно. Значение по умолчанию — last.
InferenceOptions dynamic Дополнительные варианты вывода. Допустимые параметры: UseFirstRowAsHeader для форматов файлов с разделителями. Например, 'InferenceOptions': {'UseFirstRowAsHeader': true}.

Возвраты

Подключаемый infer_storage_schema модуль возвращает одну таблицу результатов, содержащую одну строку или столбец, содержащую строку схемы CSL.

Примечание.

  • Ключи секрета контейнера хранилища должны иметь разрешения для списка в дополнение к read.
  • Стратегия вывода схемы "все" является очень "дорогой" операцией, так как она подразумевает чтение всех найденных артефактов и слияние их схемы.
  • Некоторые возвращаемые типы могут не быть фактическими в результате неправильного предположения типа (или в результате процесса слияния схемы). Поэтому перед созданием внешней таблицы необходимо тщательно просмотреть результат.

Пример

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