Power Query テンプレートのコネクタを構築する
重要
この機能の一部またはすべては、プレビュー リリースの一部として利用できます。 コンテンツおよび機能は変更される場合があります。
この記事では、Microsoft Sustainability Manager 用の Power Query テンプレートのコネクターを作成する方法を紹介します。 Power Query テンプレート コネクターの構築を成功させるには、Dynamics 365 の基本的なソリューション開発と、Sustainability Manager で Power Query テンプレートを構築する方法を知っている必要があります。
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 テンプレートをコネクタ ソリューションにパッケージ化できます。
少なくとも、解凍されたソリューション内の次のフォルダー構造には以下が含まれている必要があります。
- フォルダー: 資産
- ファイル: msdyn_dataconnectors.xml
- ファイル: msdyn_dataflowtemplates.xml
- フォルダー: その他
- ファイル: Customizations.xml
- ファイル: Solution.xml
- ファイル: <solution>.cdsproj
資産 の下のファイルには、Power Query テンプレート コネクタを格納するために必要な情報が含まれています。 msdyn_dataconnectors.xml ファイルには、コネクタに関する重要なメタデータが含まれています。 インストール後、Sustainability Manager でコネクタがどのように表示されるかが決まります。 msdyn_dataflowtemplates.xml ファイルには、 Power Query テンプレートに含まれるすべての変換を含む、Power Query テンプレートに関する情報が含まれています。 これらのファイルを使用して、単一のソリューション内に 1 つ以上のコネクタを作成できます。
このセクションの指示に従って、各ファイルを作成します。
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>fb6ee8dd-b84c-4599-adb6-1812b3878052</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_titlePower Query テンプレート コネクタをデモする をコネクター名に変更します。 msdyn_dataflowtemplateid この値をご利用の Power Query テンプレートのものに変更してください。 この値は msdyn_dataflowtemplates.xml ファイルでも使用する GUID です。
msdyn_dataflowtemplates.xml ファイルを作成する
任意のテキスト エディターで、msdyn_dataflowtemplates.xml という名前の新しいファイルを作成します。
詳細に合わせて次の XML をコピーして変更します:
<msdyn_dataflowtemplates> <msdyn_dataflowtemplate msdyn_dataflowtemplateid="fb6ee8dd-b84c-4599-adb6-1812b3878052"> <msdyn_uniquename>msm_sustainabilitySamplePQTemplate</msdyn_uniquename> <msdyn_category>msdyn_sustainability</msdyn_category> <msdyn_configuration>{\"msdyn_sustainability\":{\"dataDefintions\":\"bd182f7f-1b7b-4360-9c02-2d0b7cd75b97, 4b1faadb-0ee4-42c8-a3fc-e3afa3987172, c4f9c6f5-dc68-49ca-8297-acbb29fece79, 6c36ce29-f121-47d6-b146-9eece7e869ec\",\"dataDefintionNames\":\"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\":\"bd182f7f-1b7b-4360-9c02-2d0b7cd75b97\",\"biz trav types\":\"4b1faadb-0ee4-42c8-a3fc-e3afa3987172\",\"orgs\":\"c4f9c6f5-dc68-49ca-8297-acbb29fece79\",\"facilities\":\"6c36ce29-f121-47d6-b146-9eece7e869ec\"}}}</msdyn_configuration> <msdyn_description>Demo Power Query template connector</msdyn_description> <msdyn_mashupdocument>{\"hostContext\":{\"type\":\"SustainabilityCloud\",\"details\":{\"EnvironmentId\":\"b9fd4065-c444-e187-a1b1-5ddeb9c39a1a\"}},\"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\":\"b9fd4065-c444-e187-a1b1-5ddeb9c39a1a\",\"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 を生成します。 この例では、 GUID = fb6ee8dd-b84c-4599-adb6-1812b3878052 を使用します。 msdyn_uniquename テンプレート レコードの一意の名前を入力します。 msdyn_category テンプレート レコードのカテゴリ。 この値はそのままにしておきます。 msdyn_configuration Sustainability Manager でサポートされているデータ カテゴリへのテンプレートのマッピング構成を表す JSON に変更します。 この 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
すべての msdyn_dataflowtemplates レコードを含む JSON が表示され、移動したいテンプレートを見つけることができます。 フィールドをコピーして貼り付けます msdyn_dataflowtemplates.xml ファイル。