Создание соединителя на базе шаблона Power Query
Внимание!
Некоторые или все функции доступны в рамках предварительного выпуска. Содержимое и функциональность могут быть изменены.
В этой статье партнерам показывается, как создать соединитель шаблонов Power Query для Microsoft Sustainability Manager. Чтобы успешно создать соединитель шаблона Power Query, вы должны знать некоторые основные принципы разработки решений для Dynamics 365 и знать, как создать шаблон Power Query в Sustainability Manager.
Если вам нужно создать соединитель Power Automate, перейдите к разделу Создание соединителя Power Automate.
Шаг 1. Создание среды
На этом этапе вы создаете решение для распространения среди пользователей Sustainability Manager, которым необходимо импортировать данные с помощью вашего соединителя.
Создайте новое неуправляемое решение в Power Apps, следуя инструкциям раздела Создание решения.
Установите Sustainability Manager в эту среду.
Шаг 2. Создание шаблона Power Query
Чтобы создать шаблон Power Query для вашего соединителя, следуйте инструкциям в разделе Разработка шаблона Power Query.
Шаг 3. Подготовка решения
Теперь, когда у вас есть среда с установленным Sustainability Manager и создан шаблон Power Query, вы можете упаковать шаблон Power Query в решение соединителя.
Как минимум следующая структура папок в распакованном решении должна содержать:
- Папка: Assets
- Файл: msdyn_dataconnectors.xml
- Файл: msdyn_dataflowtemplates.xml
- Папка: Other
- Файл: Customizations.xml
- Файл: Solution.xml
- Файл: <решение>.cdsproj
Файлы в папке Assets содержат необходимую информацию для размещения вашего соединителя шаблона Power Query. Файл msdyn_dataconnectors.xml содержит важные метаданные о вашем соединителе. После установки он определяет, как ваш соединитель будет отображаться в Sustainability Manager. Файл msdyn_dataflowtemplates.xml содержит информацию о вашем шаблоне Power Query, включая все преобразования, которые содержит ваш шаблон Power Query. Эти файлы можно использовать для создания одного или нескольких соединителей в одном решении.
Для создания каждого из файлов следуйте инструкциям из этого раздела.
Создание файла msdyn_dataconnectors.xml
В предпочитаемом вами текстовом редакторе создайте новый файл с именем msdyn_dataconnectors.xml.
Скопируйте и измените следующий XML в соответствии со своими данными:
<msdyn_dataconnectors> <msdyn_dataconnector msdyn_dataconnectorid="bc9e9b1e-45fa-4d6e-b799-9dcb49aaf981"> <msdyn_connectorstatus>700610001</msdyn_connectorstatus> <msdyn_connectortype>700610007</msdyn_connectortype> <msdyn_description>Demo Power Query templates connector</msdyn_description> <msdyn_supportlinkurl>https://www.microsoft.com</msdyn_supportlinkurl> <msdyn_logo_text> </msdyn_logo_text> <msdyn_name>Demo Power Query templates connector</msdyn_name> <msdyn_title>Demo Power Query templates connector</msdyn_title> <msdyn_dataflowtemplateid> <msdyn_dataflowtemplateid></msdyn_dataflowtemplateid> </msdyn_dataflowtemplateid> </msdyn_dataconnector> </msdyn_dataconnectors>
Параметр Сведения msdyn_dataconnectorid Создайте новый GUID для идентификации вашего соединителя, придерживаясь формата GUID. В нашем примере мы используем GUID = bc9e9b1e-45fa-4d6e-b799-9dcb49aaf981. Ваш GUID — это идентификатор вашего соединителя, который понадобится вам на последующих шагах. msdyn_connectorstatus Оставьте это значение равным 700610001. Это значение представляет опубликованный соединитель. msdyn_connectortype Оставьте это значение равным 700610007. Это значение представляет тип соединителя. В данном случае это значение для соединителя шаблона Power Query. msdyn_description Добавьте краткое описание своего соединителя. msdyn_supportlinkurl Замените текст URL-адресом, по которому ваши пользователи должны обращаться в случае сбоя подключения. Для получения информации о тестировании неудачных подключений перейдите к разделу Проверка обработки ошибок. Без этого URL-адреса ваш соединитель не будет отображаться в Sustainability Manager. msdyn_logo_text Используйте кодировщик по вашему выбору, чтобы закодировать и сохранить изображение логотипа в формате Base 64. Изображение должно быть 36 x 36 пикселей. Вставьте кодировку Base 64 в этот параметр. msdyn_name
msdyn_titleИзмените Demo Power Query templates connector на имя вашего соединителя. msdyn_dataflowtemplateid Измените это значение на значение для вашего шаблона Power Query. Это значение представляет собой идентификатор GUID, который вы также используете в файле msdyn_dataflowtemplates.xml.
Создание файла msdyn_dataflowtemplates.xml
В предпочитаемом вами текстовом редакторе создайте новый файл с именем msdyn_dataflowtemplates.xml.
Скопируйте и измените следующий XML в соответствии со своими данными:
<msdyn_dataflowtemplates> <msdyn_dataflowtemplate msdyn_dataflowtemplateid=""> <msdyn_uniquename>msm_sustainabilitySamplePQTemplate</msdyn_uniquename> <msdyn_category>msdyn_sustainability</msdyn_category> <msdyn_configuration>{\"msdyn_sustainability\":{\"dataDefinitions\":\", , , \",\"dataDefinitionNames\":\"6. Business travel, Facilities, Organizational units, Business travel types\",\"map\":{\"Business Travel\":\"{\\\"fields\\\":[{\\\"destinationField\\\":\\\"msdyn_businesstraveltypeid\\\",\\\"sourceField\\\":\\\"Business Travel Type\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_consumptionstartdate\\\",\\\"sourceField\\\":\\\"Consumption Start Date\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_consumptionenddate\\\",\\\"sourceField\\\":\\\"Consumption End Date\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_name\\\",\\\"sourceField\\\":\\\"Name\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_description\\\",\\\"sourceField\\\":\\\"Description\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_facilityid\\\",\\\"sourceField\\\":\\\"Facility\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_cost\\\",\\\"sourceField\\\":\\\"Cost\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_costunit\\\",\\\"sourceField\\\":\\\"Cost Unit\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_distance\\\",\\\"sourceField\\\":\\\"Distance\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_distanceunit\\\",\\\"sourceField\\\":\\\"Distance Unit\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_organizationalunitid\\\",\\\"sourceField\\\":\\\"Organizational unt\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_dataqualitytype\\\",\\\"sourceField\\\":\\\"Data Quality\\\",\\\"isCustomDimension\\\":false},{\\\"sourceField\\\":\\\"Production value\\\",\\\"destinationField\\\":\\\"Production Amplifier\\\",\\\"isCustomDimension\\\":true}]}\",\"biz trav types\":\"{\\\"fields\\\":[{\\\"destinationField\\\":\\\"msdyn_name\\\",\\\"sourceField\\\":\\\"Name\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_description\\\",\\\"sourceField\\\":\\\"Description\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_origincorrelationid\\\",\\\"sourceField\\\":\\\"Origin correlation id\\\",\\\"isCustomDimension\\\":false}]}\",\"orgs\":\"{\\\"fields\\\":[{\\\"destinationField\\\":\\\"msdyn_name\\\",\\\"sourceField\\\":\\\"Name\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_organizationalunittype\\\",\\\"sourceField\\\":\\\"Organizational unit type\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_addressstreet1\\\",\\\"sourceField\\\":\\\"Address\\\",\\\"isCustomDimension\\\":false}]}\",\"facilities\":\"{\\\"fields\\\":[{\\\"destinationField\\\":\\\"msdyn_name\\\",\\\"sourceField\\\":\\\"Name\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_addresscity\\\",\\\"sourceField\\\":\\\"City\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_addresscountryisocode\\\",\\\"sourceField\\\":\\\"Country/Region\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_addresszippostalcode\\\",\\\"sourceField\\\":\\\"Zip/Postal\\\",\\\"isCustomDimension\\\":false},{\\\"destinationField\\\":\\\"msdyn_addressstreet1\\\",\\\"sourceField\\\":\\\"Address \\\",\\\"isCustomDimension\\\":false}]}\"},\"mapSdds\":{\"Business Travel\":\"aaaa0000-bb11-2222-33cc-444444dddddd\",\"biz trav types\":\"bbbb1111-cc22-3333-44dd-555555eeeeee\",\"orgs\":\"cccc2222-dd33-4444-55ee-666666ffffff\",\"facilities\":\"dddd3333-ee44-5555-66ff-777777aaaaaa\"}}}</msdyn_configuration> <msdyn_description>Demo Power Query template connector</msdyn_description> <msdyn_mashupdocument>{\"hostContext\":{\"type\":\"SustainabilityCloud\",\"details\":{\"EnvironmentId\":\"\"}},\"mashupName\":\"Sustainability--04000419112812547\",\"mashupDocument\":\"section Section1;\\r\\nshared #\\\"Business Travel\\\" = let\\n Source = Excel.Workbook(Web.Contents(\\\"contoso/Documents/Apps/Microsoft Power Query/Uploaded Files/business travel 9.xlsx\\\"), null, true),\\n #\\\"Navigation 1\\\" = Source{[Item = \\\"Business Travel\\\", Kind = \\\"Sheet\\\"]}[Data],\\n #\\\"Promoted headers\\\" = Table.PromoteHeaders(#\\\"Navigation 1\\\", [PromoteAllScalars = true]),\\n #\\\"Changed column type\\\" = Table.TransformColumnTypes(#\\\"Promoted headers\\\", {{\\\"Business Travel Type\\\", type text}, {\\\"Consumption Start Date\\\", type datetime}, {\\\"Consumption End Date\\\", type datetime}, {\\\"Data Quality\\\", type text}, {\\\"Name\\\", type text}, {\\\"Organizational unt\\\", type text}, {\\\"Description\\\", type text}, {\\\"Facility\\\", type text}, {\\\"Cost\\\", Int64.Type}, {\\\"Cost Unit\\\", type text}, {\\\"Distance\\\", Int64.Type}, {\\\"Distance Unit\\\", type text}, {\\\"Traveler\\\", type text}, {\\\"Is Good use of money\\\", type text}, {\\\"Budget\\\", Int64.Type}, {\\\"Had Fun\\\", type text}, {\\\"Personal Note\\\", type text}, {\\\"Production value\\\", Int64.Type}}),\\n #\\\"Filtered rows\\\" = Table.SelectRows(#\\\"Changed column type\\\", each ([Traveler] = FullName))\\nin\\n #\\\"Filtered rows\\\";\\r\\nshared #\\\"biz trav types\\\" = let\\r\\n Source = Excel.Workbook(Web.Contents(\\\"contoso/Documents/Apps/Microsoft Power Query/Uploaded Files/business travel 9.xlsx\\\"), null, true),\\r\\n #\\\"Navigation 1\\\" = Source{[Item = \\\"biz trav types\\\", Kind = \\\"Sheet\\\"]}[Data],\\r\\n #\\\"Changed column type\\\" = Table.TransformColumnTypes(#\\\"Navigation 1\\\", {{\\\"Column1\\\", type text}, {\\\"Column2\\\", type text}, {\\\"Column3\\\", type text}}),\\r\\n #\\\"Promoted headers\\\" = Table.PromoteHeaders(#\\\"Changed column type\\\", [PromoteAllScalars = true])\\r\\nin\\r\\n #\\\"Promoted headers\\\";\\r\\nshared orgs = let\\r\\n Source = Excel.Workbook(Web.Contents(\\\"https://contoso/Documents/Apps/Microsoft Power Query/Uploaded Files/business travel 9.xlsx\\\"), null, true),\\r\\n #\\\"Navigation 1\\\" = Source{[Item = \\\"orgs\\\", Kind = \\\"Sheet\\\"]}[Data],\\r\\n #\\\"Changed column type\\\" = Table.TransformColumnTypes(#\\\"Navigation 1\\\", {{\\\"Column1\\\", type text}, {\\\"Column2\\\", type text}, {\\\"Column3\\\", type text}}),\\r\\n #\\\"Promoted headers\\\" = Table.PromoteHeaders(#\\\"Changed column type\\\", [PromoteAllScalars = true])\\r\\nin\\r\\n #\\\"Promoted headers\\\";\\r\\nshared facilities = let\\r\\n Source = Excel.Workbook(Web.Contents(\\\"https://contoso/Documents/Apps/Microsoft Power Query/Uploaded Files/business travel 9.xlsx\\\"), null, true),\\r\\n #\\\"Navigation 1\\\" = Source{[Item = \\\"facilities\\\", Kind = \\\"Sheet\\\"]}[Data],\\r\\n #\\\"Promoted headers\\\" = Table.PromoteHeaders(#\\\"Navigation 1\\\", [PromoteAllScalars = true]),\\r\\n #\\\"Changed column type\\\" = Table.TransformColumnTypes(#\\\"Promoted headers\\\", {{\\\"Name\\\", type text}, {\\\"Address \\\", type text}, {\\\"City\\\", type text}, {\\\"Country/Region\\\", type text}, {\\\"Zip/Postal\\\", Int64.Type}, {\\\"IsLeased\\\", type text}}),\\r\\n #\\\"Renamed columns\\\" = Table.RenameColumns(#\\\"Changed column type\\\", {{\\\"Address \\\", \\\"Address\\\"}})\\r\\nin\\r\\n #\\\"Renamed columns\\\";\\r\\n[Description = \\\"first name last name of the user doing the business travel\\\"]\\r\\nshared FullName = \\\"Stanko Gutalj\\\" meta [IsParameterQuery = true, IsParameterQueryRequired = true, Type = type any];\\r\\n\",\"queryGroups\":[],\"documentLocale\":\"en-US\",\"gatewayObjectId\":null,\"queriesMetadata\":{\"Business Travel\":{\"queryId\":\"c7b76ec4-8e29-42d1-b63d-7710f85a7d4b\",\"queryName\":\"Business Travel\",\"queryGroupId\":null,\"entityName\":null,\"lastKnownIsCalculatedEntity\":false,\"lastKnownIsLinkedEntity\":false,\"lastKnownIsParameter\":false,\"isHidden\":false,\"lastKnownResultTypeName\":\"table\",\"loadEnabled\":true,\"fieldsMetadata\":{},\"deleteExistingDataOnLoad\":false,\"hostProperties\":{},\"jsonOutputDestinations\":null,\"bindToDefaultOutputDestination\":null,\"jsonIncrementalRefreshSettings\":null,\"stagingDefinition\":null},\"biz trav types\":{\"queryId\":\"0c8434c7-29c6-4f7b-a5f5-b5791604061d\",\"queryName\":\"biz trav types\",\"queryGroupId\":null,\"entityName\":null,\"lastKnownIsCalculatedEntity\":false,\"lastKnownIsLinkedEntity\":false,\"lastKnownIsParameter\":false,\"isHidden\":false,\"lastKnownResultTypeName\":\"table\",\"loadEnabled\":true,\"fieldsMetadata\":{},\"deleteExistingDataOnLoad\":false,\"hostProperties\":{},\"jsonOutputDestinations\":null,\"bindToDefaultOutputDestination\":null,\"jsonIncrementalRefreshSettings\":null,\"stagingDefinition\":null},\"orgs\":{\"queryId\":\"94756842-bfc6-4459-9703-627d2f95594a\",\"queryName\":\"orgs\",\"queryGroupId\":null,\"entityName\":null,\"lastKnownIsCalculatedEntity\":false,\"lastKnownIsLinkedEntity\":false,\"lastKnownIsParameter\":false,\"isHidden\":false,\"lastKnownResultTypeName\":\"table\",\"loadEnabled\":true,\"fieldsMetadata\":{},\"deleteExistingDataOnLoad\":false,\"hostProperties\":{},\"jsonOutputDestinations\":null,\"bindToDefaultOutputDestination\":null,\"jsonIncrementalRefreshSettings\":null,\"stagingDefinition\":null},\"facilities\":{\"queryId\":\"87485e4a-ecdb-4617-9c8c-a7c96a2092f7\",\"queryName\":\"facilities\",\"queryGroupId\":null,\"entityName\":null,\"lastKnownIsCalculatedEntity\":false,\"lastKnownIsLinkedEntity\":false,\"lastKnownIsParameter\":false,\"isHidden\":false,\"lastKnownResultTypeName\":\"table\",\"loadEnabled\":true,\"fieldsMetadata\":{},\"deleteExistingDataOnLoad\":false,\"hostProperties\":{},\"jsonOutputDestinations\":null,\"bindToDefaultOutputDestination\":null,\"jsonIncrementalRefreshSettings\":null,\"stagingDefinition\":null},\"FullName\":{\"queryId\":\"488f10a8-9f01-4674-a004-c8a6493785a6\",\"queryName\":\"FullName\",\"queryGroupId\":null,\"entityName\":null,\"lastKnownIsCalculatedEntity\":false,\"lastKnownIsLinkedEntity\":false,\"lastKnownIsParameter\":true,\"isHidden\":false,\"lastKnownResultTypeName\":\"text\",\"loadEnabled\":false,\"fieldsMetadata\":{},\"deleteExistingDataOnLoad\":false,\"hostProperties\":{},\"jsonOutputDestinations\":null,\"bindToDefaultOutputDestination\":null,\"jsonIncrementalRefreshSettings\":null,\"stagingDefinition\":null}},\"connectionOverrides\":[{\"path\":\"https://contoso/Documents/Apps/Microsoft Power Query/Uploaded Files/business travel 9.xlsx\",\"kind\":\"Web\",\"provider\":\"PowerApps\",\"environmentName\":\"\",\"apiName\":\"webcontents\",\"connectionName\":\"926cadb147e044fa9da7cffce4f70e82\",\"credentialDetails\":{},\"connectionParameters\":{}}],\"trustedConnections\":null,\"useHostConnectionProvider\":false,\"fastCombine\":false,\"allowNativeQueries\":false,\"allowedModules\":null,\"skipAutomaticTypeAndHeaderDetection\":false,\"disableAutoAnonymousConnectionUpsert\":false,\"hostProperties\":null,\"defaultOutputDestinationConfiguration\":null,\"stagingDefinition\":null}</msdyn_mashupdocument> <msdyn_templatename>Demo Power Query template connector</msdyn_templatename> <msdyn_templateversion>1.0</msdyn_templateversion> </msdyn_dataflowtemplate> </msdyn_dataflowtemplates>
Параметр Сведения msdyn_dataflowtemplateid Создайте новый GUID для идентификации вашего шаблона, придерживаясь формата GUID. msdyn_уникальное_имя Введите уникальное имя для своей записи шаблона. msdyn_category Категория записи шаблона. Оставьте это значение без изменений. msdyn_configuration Измените это значение на JSON, который представляет конфигурацию сопоставления вашего шаблона с категориями данных, поддерживаемыми в Sustainability Manager. Инструкции по получению этого JSON приведены после этой таблицы. msdyn_description Введите описание для вашего шаблона Power Query. msdyn_mashupdocument Этот параметр представляет собой текстовое представление всех преобразований в вашем соединителе. Инструкции по получению этого текста приведены после этой таблицы. msdyn_templatename Введите имя для шаблона. msdyn_templateversion Введите номер версии вашего шаблона. Чтобы извлечь информацию для использования в параметрах msdyn_configuration и msdyn_mashupdocument, скопируйте и вставьте следующий текст в браузер. Замените <your_organization> на имя среды вашей организации.
https://<your_organization>.crm10.dynamics.com/api/data/v9.0/msdyn_dataflowtemplates
JSON отображается со всеми вашими записями msdyn_dataflowtemplates, где вы можете найти шаблон, который хотите переместить. Скопируйте и вставьте поля в файл msdyn_dataflowtemplates.xml.