Формат 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, содержащий определение сущности, которую вы хотите записать.
- Определите путь к секции и формат выходных файлов, которые служба должна использовать для записи сущностей.
- Задайте расположение выходного файла и расположение и имя файла манифеста.
Импорт схемы
Формат CDM доступен только в качестве встроенного набора данных и по умолчанию не имеет связанной схемы. Чтобы получить метаданные столбца, нажмите кнопку Импорт схемы на вкладке Проекция. Это позволит сослаться на имена столбцов и типы данных, заданные совокупностью. Чтобы импортировать схему, сеанс отладки потока данных должен быть активным и иметь использующийся файл определения сущности CDM, на который можно указывать.
Если необходимо сопоставить столбцы потока данных со свойствами сущности в преобразовании приемника, перейдите на вкладку "Сопоставление" и выберите "Импорт схемы". Служба считывает ссылку на сущность, на которую вы указали в параметрах приемника, что позволяет сопоставлять целевую схему CDM.
Примечание.
При использовании типа источника model.json, который происходит из потоков данных Power BI или Power Platform, во время его преобразования может возникнуть ошибка "corpus path is null or empty" (путь совокупности имеет значение NULL или является пустым). Скорее всего, это связано с проблемами форматирования пути к расположению секции в файле model.json. Чтобы устранить это, выполните указанные ниже действия.
- Откройте файл model.json в текстовом редакторе.
- Найдите свойство partitions.Location.
- Измените "blob.core.windows.net" на "dfs.core.windows.net".
- Исправьте любое кодирование "%2F" в URL-адресе на "/".
- При использовании Потоков данных 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
Связанный контент
Создайте преобразование источника в потоке данных для сопоставления.