формат Common Data Model в Azure Data Factory и Synapse Analytics

ПРИМЕНИМО К: Azure Data Factory Azure Synapse Analytics

Совет

фабрика Data в Microsoft Fabric — это следующее поколение Azure Data Factory с более простой архитектурой, встроенным ИИ и новыми функциями. Если вы не знакомы с интеграцией данных, начните с Fabric фабрики данных. Существующие рабочие нагрузки ADF могут обновляться до Fabric для доступа к новым возможностям в области обработки и анализа данных, аналитики в режиме реального времени и отчетов.

Система метаданных Common Data Model (CDM) позволяет легко предоставлять доступ к данным и его смыслу в приложениях и бизнес-процессах. Дополнительные сведения см. в обзоре Common Data Model.

В конвейерах Azure Data Factory и Synapse пользователи могут преобразовать данные из сущностей CDM как в model.json, так и в форме манифеста, хранящейся в Azure Data Lake Store 2 (ADLS 2-го поколения) с помощью потоков данных сопоставления. Вы также можете передавать данные в формате CDM с помощью ссылок на сущности CDM, которые будут использовать данные в формате CSV или Parquet в секционированных папках.

Свойства потока данных для сопоставления

Common Data Model доступен в виде набора данных inline в сопоставлении потоков данных как источника, так и приемника.

Примечание.

При записи сущностей CDM необходимо иметь определение сущности CDM (схема метаданных), которое уже используется в качестве ссылки. Приемник потока данных считывает этот файл сущности CDM и импортирует схему в приемник для сопоставления полей.

Примечание.

При использовании CDM с записью измененных данных (CDC) в потоках данных обновления обнаруживаются с помощью подхода CDC на основе файлов, управляемого метками времени последнего изменения файла.

Свойства источника

В приведенной ниже таблице указаны свойства, поддерживаемые источником CDM. Изменить эти свойства можно на вкладке Source options (Параметры источника).

Имя Описание Обязательное поле Допустимые значения Свойство скрипта для потока данных
Формат Формат должен быть cdm yes cdm format
Формат метаданных Где находится ссылка сущности на данные. Если используется CDM версии 1.0, выберите манифест. Если используется CDM до версии 1.0, выберите model.json. Да 'manifest' или 'model' manifestType
Корневое расположение: контейнер Имя контейнера папки CDM yes Строка fileSystem
Корневое расположение: путь к папке Расположение корневой папки CDM yes Строка folderPath
Файл манифеста: путь сущности Путь к папке сущности в корневой папке no Строка entityPath
Файл манифеста: имя манифеста Имя файла манифеста. Значение по умолчанию — default Нет Строка manifestName
Фильтр по последнему изменению Задает фильтр для файлов по времени последнего изменения no Метка времени modifiedAfter
modifiedBefore
Схема связанной службы Связанная служба, в которой находится совокупность Да, при использовании манифеста 'adlsgen2' или 'github' corpusStore
Контейнер ссылки на сущность Контейнер совокупности находится в Да, при использовании манифеста и совокупности в ADLS 2-го поколения Строка adlsgen2_fileSystem
Репозиторий ссылок на сущности имя репозитория GitHub Да, если используется манифест и корпус в GitHub Строка github_repository
Ветвь ссылки на сущность ветвь репозитория GitHub Да, если используется манифест и корпус в GitHub Строка github_branch
Папка совокупности Корневое расположение совокупности Да, при использовании манифеста Строка corpusPath
Сущность совокупности Путь к ссылке на сущность yes Строка Сущность
Allow no files found (Разрешить ненайденные файлы) Когда задано значение true, ошибка не возникает, если файлы не найдены no true или false ignoreNoFilesFound

При выборе "ссылка на сущность" в преобразованиях источника и приемника можно выбрать следующие три параметра расположения ссылки на сущность:

  • Local использует сущность, определенную в файле манифеста, который служба уже использует.
  • Custom будет запрашивать указание на файл манифеста сущности, отличный от файла манифеста, который использует служба.
  • Стандарт будет использовать ссылку на сущности из стандартной библиотеки сущностей CDM, поддерживаемой в GitHub.

Параметры приемника

  • Укажите файл ссылки на сущность CDM, содержащий определение сущности, которую вы хотите записать.

Параметры сущности

  • Определите путь к секции и формат выходных файлов, которые служба должна использовать для записи сущностей.

Формат сущности

  • Задайте расположение выходного файла и расположение и имя файла манифеста.

Расположение CDM

Импорт схемы

Формат CDM доступен только в качестве встроенного набора данных и по умолчанию не имеет связанной схемы. Чтобы получить метаданные столбца, нажмите кнопку Импорт схемы на вкладке Проекция. Это позволит сослаться на имена столбцов и типы данных, заданные совокупностью. Чтобы импортировать схему, сеанс отладки потока данных должен быть активным и иметь использующийся файл определения сущности CDM, на который можно указывать.

Если необходимо сопоставить столбцы потока данных со свойствами сущности в преобразовании приемника, перейдите на вкладку "Сопоставление" и выберите "Импорт схемы". Служба считывает ссылку на сущность, на которую вы указали в параметрах приемника, что позволяет сопоставлять целевую схему CDM.

Параметры приемника CDM

Примечание.

При использовании типа источника model.json, исходящее из потоков данных Power BI или Power Platform, может возникнуть ошибка "corpus path is null или empty" из преобразования источника. Скорее всего, это связано с проблемами форматирования пути к расположению секции в файле model.json. Чтобы устранить это, выполните указанные ниже действия.

  1. Откройте файл model.json в текстовом редакторе.
  2. Найдите свойство partitions.Location.
  3. Измените "blob.core.windows.net" на "dfs.core.windows.net".
  4. Исправьте любое кодирование "%2F" в URL-адресе на "/".
  5. При использовании потоков данных ADF специальные символы в пути к файлу секции необходимо заменить буквенно-числовыми значениями или переключиться на Azure Synapse потоки данных

Пример скрипта потока исходных данных CDM

source(output(
        ProductSizeId as integer,
        ProductColor as integer,
        CustomerId as string,
        Note as string,
        LastModifiedDate as timestamp
    ),
    allowSchemaDrift: true,
    validateSchema: false,
    entity: 'Product.cdm.json/Product',
    format: 'cdm',
    manifestType: 'manifest',
    manifestName: 'ProductManifest',
    entityPath: 'Product',
    corpusPath: 'Products',
    corpusStore: 'adlsgen2',
    adlsgen2_fileSystem: 'models',
    folderPath: 'ProductData',
    fileSystem: 'data') ~> CDMSource

Свойства приемника

В приведенной ниже таблице указаны свойства, поддерживаемые приемником CDM. Эти свойства можно изменить на вкладке Параметры.

Имя Описание Обязательное поле Допустимые значения Свойство скрипта для потока данных
Формат Формат должен быть cdm yes cdm format
Корневое расположение: контейнер Имя контейнера папки CDM yes Строка fileSystem
Корневое расположение: путь к папке Расположение корневой папки CDM yes Строка folderPath
Файл манифеста: путь сущности Путь к папке сущности в корневой папке no Строка entityPath
Файл манифеста: имя манифеста Имя файла манифеста. Значение по умолчанию — default Нет Строка manifestName
Схема связанной службы Связанная служба, в которой находится совокупность yes 'adlsgen2' или 'github' corpusStore
Контейнер ссылки на сущность Контейнер совокупности находится в Да, если совокупность в ADLS 2-го поколения Строка adlsgen2_fileSystem
Репозиторий ссылок на сущности имя репозитория GitHub Да, если корпус в GitHub Строка github_repository
Ветвь ссылки на сущность ветвь репозитория GitHub Да, если корпус в GitHub Строка github_branch
Папка совокупности Корневое расположение совокупности yes Строка corpusPath
Сущность совокупности Путь к ссылке на сущность yes Строка Сущность
Путь к секции Расположение, в котором будет записана секция no Строка partitionPath
Clear the folder (Очистить папку) Указывает, очищается ли конечная папка перед записью no true или false truncate
Тип формата При выборе указывает, что формат Parquet no parquet, если указано subformat
Разделитель столбцов При записи в DelimitedText способ разделения столбцов Да, при записи в DelimitedText Строка columnDelimiter
Использовать первую строку в качестве заголовка Если используется DelimitedText, добавлять ли имена столбцов в качестве заголовков no true или false columnNamesAsHeader

Пример скрипта потока данных приемника CDM

Связанный скрипта потока данных:

CDMSource sink(allowSchemaDrift: true,
    validateSchema: false,
    entity: 'Product.cdm.json/Product',
    format: 'cdm',
    entityPath: 'ProductSize',
    manifestName: 'ProductSizeManifest',
    corpusPath: 'Products',
    partitionPath: 'adf',
    folderPath: 'ProductSizeData',
    fileSystem: 'cdm',
    subformat: 'parquet',
    corpusStore: 'adlsgen2',
    adlsgen2_fileSystem: 'models',
    truncate: true,
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> CDMSink

Создайте преобразование источника в потоке данных для сопоставления.