Zbuduj łącznik szablonu Power Query
Ważne
Niektóre lub wszystkie te funkcje są dostępne w wersji zapoznawczej. Zawartość i funkcjonalność mogą ulec zmianie.
W tym artykule opisano partnerów, jak utworzyć łącznik Power Query szablonów dla Microsoft Sustainability Manager. Aby pomyślnie utworzyć łącznik Power Query szablonów, trzeba znać kilka podstawowych rozwiązań dla usługi Dynamics 365 Power Query i jak utworzyć szablon w Sustainability Manager.
Jeśli potrzebne jest zbudowanie łącznika Power Automate , przejdź do kompilacji łącznika Power Automate .
Krok 1. Tworzenie środowiska
W tym kroku należy utworzyć rozwiązanie dystrybuowane do użytkowników Sustainability Manager, którzy muszą importować dane przy użyciu łącznika.
Utwórz nowe rozwiązanie niezarządzane w Power Apps zgodnie z instrukcjami wyświetlanymi w Tworzenie rozwiązania.
Zainstaluj Sustainability Manager w tym środowisku.
Krok 2: Utwórz szablon Power Query
Aby utworzyć szablon Power Query dla łącznika, postępuj zgodnie z instrukcjami wyświetlanymi w tece Projektowanie Power Query szablonu.
Krok 3: Przygotowanie rozwiązania
Gdy już jest dostępne środowisko z zainstalowanym Sustainability Manager i utworzono szablon Power Query, możesz spakować szablon Power Query do rozwiązania łącznika.
W rozwiązaniu powinna być przynajmniej następująca struktura folderów:
- Folder: Zasoby
- Plik: msdyn_dataconnectors.xml
- Plik: msdyn_dataflowtemplates.xml
- Folder: Inny
- Plik: Customizations.xml
- Plik: Solution.xml
- Plik: <solution>.cdsproj
Pliki w obszarze Zasoby zawierają informacje niezbędne do obudowania łącznika Power Query szablonów. Plik msdyn_dataconnectors.xml zawiera ważne metadane dotyczące łącznika. Po zainstalowaniu określa sposób, w jaki łącznik będzie wyświetlany w Sustainability Manager. Plik msdyn_dataflowtemplates.xml zawiera informacje o szablonie Power Query , w tym wszystkie przekształcenia zawarte w Power Query szablonie. Plików tych można używać do tworzenia jednego lub większej liczby łączników w jednym rozwiązaniu.
Postępuj zgodnie z instrukcjami dostępnymi w tej sekcji, aby utworzyć każdy plik.
Utwórz plik msdyn_dataconnectors.xml
W wybranym edytorze tekstu utwórz nowy plik o nazwie msdyn_dataconnectors.xml.
Skopiuj i zmodyfikuj następujący kod XML w celu dopasowania do szczegółów:
<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>
Parametr Szczegóły msdyn_dataconnectorid Wygeneruj nowy identyfikator GUID w celu zidentyfikowania łącznika i sformatuj go do formatu GUID. W naszym przykładzie użyjemy identyfikatora GUID = bc9e9b1e-45fa-4d6e-b799-9dcb49aaf981. Identyfikator GUID łącznika jest identyfikatorem łącznika, którego należy w kolejnych krokach. msdyn_connectorstatus Pozostaw tę wartość jako 700610001. Ta wartość reprezentuje opublikowany łącznik. msdyn_connectortype Pozostaw tę wartość jako 700610007. Ta wartość reprezentuje rodzaj łącznika. W tym przypadku jest to wartość łącznika Power Query szablonów. msdyn_description Dodaj krótki opis łącznika. msdyn_supportlinkurl Zastąp tekst adresem URL, z którym mają się kontaktować użytkownicy w przypadku awarii połączenia. Aby uzyskać informacje o testowania połączeń, które zakończyły się niepowodzeniem, przejdź do Test obsługi błędów. Bez tego adresu URL Łącznik nie będzie wyświetlany w Sustainability Manager. msdyn_logo_text Użyj wybranego kodera do zakodowania i zapisania obrazu logo w bazie 64. Obraz powinien mieć rozmiar 36 x 36 pikseli. Wklej w tym parametrze kodowanie podstawowe 64.
msdyn_name msdyn_titleZmień pokazowy łącznik szablonów Power Query na nazwę łącznika. msdyn_dataflowtemplateid Zmień tę wartość na tę dla szablonu Power Query . Ta wartość jest identyfikatorem GUID, który jest także identyfikatorem msdyn_dataflowtemplates.xml guid.
Utwórz plik msdyn_dataflowtemplates.xml
W wybranym edytorze tekstu utwórz nowy plik o nazwie msdyn_dataflowtemplates.xml.
Skopiuj i zmodyfikuj następujący kod XML w celu dopasowania do szczegółów:
<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>
Parametr Szczegóły msdyn_dataflowtemplateid Wygeneruj nowy identyfikator GUID w celu zidentyfikowania szablonu i sformatuj go do formatu GUID. msdyn_uniquename Wprowadź unikatową nazwę dla swojego rekordu szablonu. msdyn_category Kategoria rekordu szablonu. Pozostaw tę wartość taką, jaka jest. msdyn_configuration Zmień tę wartość na JSON, która reprezentuje konfigurację mapowania szablonu na kategorie danych obsługiwane przez Sustainability Manager. Instrukcje uzyskiwania tego JSON są podane po poniższej tabeli. msdyn_description Wprowadź opis dla szablonu Power Query. msdyn_mashupdocument Ten parametr jest reprezentacją tekstową wszystkich przekształceń w łączniku. Instrukcje uzyskiwania tego tekstu są podane po poniższej tabeli. msdyn_templatename Wprowadź nazwę szablonu. msdyn_templateversion Wpisz numer wersji szablonu. Aby wyodrębnić informacje do użycia w msdyn_configuration i parametry msdyn_mashupdocument, skopiuj i wklej następujący tekst w przeglądarce. Zastąp <your_organization> nazwą środowiska organizacji.
https://<your_organization>.crm10.dynamics.com/api/data/v9.0/msdyn_dataflowtemplates
Zostanie wyświetlony JSON ze wszystkimi rekordami msdyn_dataflowtemplates, gdzie można znaleźć szablon, który chcesz przenieść. Skopiuj i wklej pola do pliku msdyn_dataflowtemplates.xml.