Формат Common Data Model в Фабрике данных Azure и Synapse Analytics

Область применения:Фабрика данных Azure Azure Synapse Analytics

Совет

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

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

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

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

Сущность Common Data Model доступна как встроенный набор данных в потоке данных для сопоставления в качестве источника и приемника.

Примечание.

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

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

В приведенной ниже таблице указаны свойства, поддерживаемые источником 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 будет запрашивать указание на файл манифеста сущности, отличный от файла манифеста, который использует служба.
  • Standard будет использовать ссылку на сущность из стандартной библиотеки сущностей CDM, поддерживаемых в GitHub.

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

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

entity settings

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

entity format

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

cdm location

Импорт схемы

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

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

CDM sink settings

Примечание.

При использовании типа источника model.json, который происходит из потоков данных Power BI или Power Platform, во время его преобразования может возникнуть ошибка "corpus path is null or empty" (путь совокупности имеет значение NULL или является пустым). Скорее всего, это связано с проблемами форматирования пути к расположению секции в файле 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

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