次の方法で共有


JOIN データ ソースを使用して、電子申告 (ER) モデル マッピングの複数のアプリケーション テーブルからデータを取得する

ノート

コミュニティの関心グループが Yammer から Microsoft Viva Engage に移行されました。 Viva Engageコミュニティに参加し、最新のディスカッションに参加するには、 Finance and Operations Viva Engage Community へのアクセス権フォームに入力し、参加するコミュニティを選択します。

電子申告 (ER) モデル マッピングまたはフォーマットを構成する際、追加することができるのは、結合タイプに必要なデータ ソースです。 デザイン時に、 結合 データ ソースを複数のデータ ソースのセットとして構成し、それぞれがレコードの一覧を返します。 最初のデータ ソースを除くすべてのデータ ソースについて、現在のデータ ソースと以前のデータ ソースのレコードを結合するために必要な条件を定義する必要があります。 実行時に、結合タイプの構成済みデータ ソースは、入れ子になったデータ ソースのレコードからフィールドを含むレコードの単一の結合リストを返します

次のタイプの結合が現在サポートされています:

  • LEFT OUTER JOIN:
    • 構成された条件に従って、最初の (左端の) データ ソースのすべてのレコードと、2 番目 (右端) のデータ ソースの一致するレコードをすべて結合します。
  • RIGHT INNER JOIN:
    • 最初の (左端) データ ソースのレコードのみを結合し、構成された条件に従って互いに一致する 2 番目 (右端) のデータ ソースのレコードのみを結合します。

構成済み結合データ ソースでは、すべてのデータ ソースがテーブル レコードタイプの場合は、結合データ ソースの実行は、単一の SQL ステートメントを使用してデータベース レベルで実行 できます。 このステートメントは、データベース呼び出しの回数を減らし、モデル マッピングのパフォーマンスを向上させます。 それ以外の場合、結合データソースはメモリ内で実行されます。

ノート

結合型のデータ ソースでレコードを結合する条件を指定する ER 式で VALUEIN 関数を使用することは、まだサポートされていません。 この関数の詳細については、 電子レポートの数式デザイナーを参照してください。

この機能の詳細を知るには、この記事の例を実行します。

例: ER モデル マッピングで結合データ ソースを使用する

次の手順では、システム管理者または電子レポート開発者が、 結合 の種類のデータ ソースを使用して複数のアプリケーション テーブルから一度にデータを取得するように電子レポート (ER) モデル マッピングを構成して、データ アクセスのパフォーマンスを向上させる方法について説明します。 これらの手順は、Dynamics 365 Financeまたは規制構成サービス (RCS) の任意の会社に対して実行できます。

必要条件

この記事の例を完了するには、これらの手順を完了するために使用するサービスに応じて、次のいずれかのロールにアクセスできる必要があります。

次のいずれかのロールに対応する財務にアクセスします。

  • 電子申告開発者
  • 電子申告機能コンサルタント
  • システム管理者

次のいずれかのロールに対応する RCS にアクセスします。

  • 電子申告開発者
  • 電子申告機能コンサルタント
  • システム管理者

また、「構成プロバイダーの作成」の手順 を完了し、アクティブな手順としてマークする 必要があります。

事前に、次のサンプル ER 構成ファイルをダウンロードして保存します。

コンテンツの説明 ファイル名
データ ソースとして使用される、サンプル ER データ モデル構成ファイルの例を次に示します。 JOIN データ ソース (version.1.1.xml) を学習するのモデル
ER データ モデルを実行する、サンプル ER モデル マッピング構成ファイルの例を次に示します。 JOIN データ ソース (version.1.1.xml) を学習するためのマッピング
サンプル ER フォーマット構成ファイル。 このファイルでは、例として ER フォーマット コンポーネントを設定するデータについて説明します。 JOIN データ ソース (version.1.xml) を学習するためのフォーマット

コンフィギュレーション プロバイダーの有効化

  1. Web ブラウザーの最初のセッションで、Finance または RCS にアクセスします。

  2. 組織管理 > ワークスペース > 電子申告の順に移動します。

  3. ローカライズ構成 ページの 構成プロバイダー セクションで、Litware, Inc. サンプル会社の構成プロバイダーが一覧に表示されていること、および 有効 とマークされていることを確認します。 このコンフィギュレーション プロバイダーが表示されない場合は、コンフィギュレーション プロバイダーの作成および有効なプロバイダーとしてのマーク付け手順のステップに従います。

    [電子レポート] ワークスペースのスクリーンショット。

サンプル ER 構成ファイルのインポート

  1. コンフィギュレーションをレポートするを選択します。

  2. ER データ モデルの構成ファイルをインポートします。

    1. Exchange を選択します。
    2. XML ファイルから読み込むを選択します。
    3. 参照を選択して、結合データ ソース version.1.1.xml を知るためのモデルファイルを見つけます。
    4. OKを選択します。
  3. ER モデル マッピングの構成ファイルをインポートします。

    1. Exchange を選択します。
    2. XML ファイルから読み込むを選択します。
    3. 参照を選択して、結合データ ソース version.1.1.xml を知るためのマッピングファイルを見つけます。
    4. OKを選択します。
  4. ER フォーマットの構成ファイルをインポートします。

    1. Exchange を選択します。
    2. XML ファイルから読み込むを選択します。
    3. 参照を選択して、結合データ ソース version.1.1.xml を知るためのフォーマットファイルを見つけます。
    4. OKを選択します。
  5. 構成ツリーで、 結合データ ソースを知るためのモデル項目を、その他のモデル項目 (使用可能な場合) と同様に展開します。

  6. ツリー内の ER 構成の一覧と、[ バージョン ] クイック タブのバージョンの詳細を確認します。これらはサンプル レポートのデータソースです。

    [電子レポートの構成] ページのスクリーンショット。

実行追跡オプションを有効にする

  1. コンフィギュレーション を選択します。

  2. ユーザー パラメーターを選択します。

  3. 次のスクリーンショットに示すように、実行トレース パラメーターを設定します。

    [電子レポート のユーザー パラメーター] ページのスクリーンショット。

    これらのパラメーターをオンにすると、インポートされた ER フォーマット ファイルの実行ごとに実行トレースが生成されます。 生成された実行トレースの詳細を使用して、ER 形式と ER モデル マッピング コンポーネントの実行を分析できます。 ER 実行トレース機能の詳細については、パフォーマンスの問題を トラブルシューティングするための ER 形式のトレース実行を参照してください。

ER モデル マッピング (1) を確認する

ER モデル マッピング コンポーネントの設定を確認します。 コンポーネントは、 結合 の種類のデータ ソースを使用せずに、ER 構成のバージョン、構成の詳細、および構成プロバイダーに関する情報にアクセスするように構成されます。

  1. 結合データ ソースを知るためのマッピングコンフィギュレーションを選択します。

  2. デザイナーを選択して、マッピングの一覧を開きます。

  3. デザイナーを選択して、マッピングの詳細を確認します。

  4. 詳細を表示を選択します。

  5. 構成ツリーで、Set1 および Set1.Details データ モデル項目を展開します。

    1. Details: Record list = Versionsのバインドは、Set1.Details 項目がバージョンデータ ソースにバインドされていて、ERSolutionVersionTable テーブルのレコードを返すことを示します。 このテーブルの各レコードは、ER コンフィギュレーションの 1 つのバージョンを表します。 このテーブルの内容は、バージョンクイック タブ (構成ページ) に表示されます。
    2. Binding ConfigurationVersion: String = @.PublicVersionNumber は、各 ER 構成のバージョンのパブリック バージョンの値が ERSolutionVersionTable テーブルの PublicVersionNumber フィールドから取得され、ConfigurationVersion 項目に移動することを意味します。
    3. Binding ConfigurationTitle: String = @.'>Relations'.Solution.Name は、ER 構成の名前が ERSolutionTable テーブルの Name フィールドから取得され、ERSolutionVersionTable テーブルと ERSolutionTable テーブルの間の多対一のリレーションシップ '>Relations' を使用してアクセスされることを示します。 現在のアプリケーション インスタンスの ER コンフィギュレーション名は、コンフィギュレーションページの構成ツリーに表示されます。
    4. @.'>Relations'.Solution.'>Relations'.SolutionVendor.Name は、現在の構成を所有する構成プロバイダーの名前が、ERSolutionTable テーブルと ERVendorTable テーブルの間にある多対一リレーションシップを使用してアクセスされる ERVendorTable テーブルの Name フィールドから取得されることを意味します。 ER コンフィギュレーション名は、各コンフィギュレーションのページ ヘッダーの、コンフィギュレーションページの構成ツリーに表示されます。 ER コンフィギュレーション プロバイダーの一覧全体は、組織管理>電子申告>コンフィギュレーション プロバイダーテーブルページにあります。

    ER モデル マッピング デザイナー ページのスクリーンショット。バインドされたデータ モデル項目の一覧。

  6. 構成ツリーで、Set1.Summary データ モデル項目を展開します。

    1. バインディング VersionsNumber: Integer = VersionsSummary.aggregated.VersionsNumber は、Set1.Summary.VersionsNumber 項目が、ERSolutionVersionTable テーブルのレコード数を返すように構成された GroupBy 型の VersionsSummary データ ソースの VersionsNumber 集約フィールドにバインドされていることを示します。

    [グループ化] パラメーターの編集ページのスクリーンショット。

  7. ページを閉じます。

ER モデル マッピング (2) を確認する

ER モデル マッピング コンポーネントの設定を確認します。 コンポーネントは、 Join 型のデータ ソースを使用して、ER 構成のバージョン、構成の詳細、および構成プロバイダーに関する情報にアクセスするように構成されます。

  1. 構成ツリーで、Set2 および Set2.Details データ モデル項目を展開します。 Details: Record list = Details のバインドは、Set2.Details 項目が Join タイプのデータ ソースとして構成された 詳細 データ ソースにバインドされていることを示します。

    展開された Set2:Record データ モデル項目を示す ER モデル マッピング デザイナー ページのスクリーンショット。

    結合 データ ソースを追加するには、Functions\Join データ ソースを選択します。

    [ER モデル マッピング デザイナー] ページの [データ ソースの種類の結合] のスクリーンショット。

  2. 詳細データ ソースを選択します。

  3. 編集を、データ ソースウィンドウで選択します。

  4. 結合を編集を選択します。

  5. 詳細を表示を選択します。

    [JOIN データ ソース パラメーター] ページのスクリーンショット。

    このページを使用して、 Join 型の必要なデータ ソースを設計します。 実行時に、このデータ ソースは、結合リスト グリッド内のデータ ソースからレコードの結合 リスト を 1 つ作成します。 レコードの結合は、最初のレコードとしてグリッド内にある ConfigurationProviders データ ソースから開始されます ( Type 列は空白です)。 他のすべてのデータ ソースのレコードは、このグリッド内の順序に基づいて親データ ソースのレコードに結合されます。 結合するすべてのデータ ソースを、ターゲット データ ソースの下に入れ子になったデータ ソースとして構成する必要があります (1Versions データ ソースは 1Configurations 1 の下に入れ子になっています。 1Configurations データ ソースは ConfigurationProviders 1 の下に入れ子になっています)。 構成された各データ ソースには、結合の条件が含まれている必要があります。 この特定の結合データ ソースでは、次の結合が定義されています:

    • ConfigurationProviders データ ソース (ERVendorTable テーブルと呼ばれます) の各レコードは、SolutionVendor フィールドと RecId フィールドで同じ値を持つ 1Configurations 1 (ERSolutionTable テーブルで参照) のレコードとのみ結合されます。 内部結合タイプは、この結合に対して使用され、次の条件では、レコードの一致にも使用されます。

    FILTER (Configurations,Configurations.SolutionVendor = ConfigurationProviders.RecId)

    • 1Configurations データ ソース (ERSolutionTable テーブルと呼ばれます) の各レコードは、Solution フィールドと RecId フィールドで同じ値を持つ 1Versions テーブル (ERSolutionVersionTable テーブルと呼ばれます) のレコードとのみ結合されます。 内部結合タイプは、この結合に対して使用され、次の条件では、レコードの一致にも使用されます。

    FILTER (ConfigurationVersions、ConfigurationVersions.Solution = ConfigurationProviders.'1Configurations'。RecId)

    • [実行] オプションはクエリとして構成されます。つまり、この結合データ ソースは、データベース レベルで SQL の直接呼び出しとして実行時に実行されます。

    アプリケーション テーブルを表すデータ ソースのレコードを結合するには、これらのテーブル間の AOT リレーションシップに存在するフィールド以外のフィールドのペアを使用して結合条件を指定します。 この種類の結合は、データベース レベルで実行するように構成することもできます。

  6. ページを閉じます。

  7. キャンセルを選択します。

  8. 構成ツリーで、Set2.Summary データ モデル項目を展開します:

    • Binding VersionsNumber: Integer = DetailsSummary.aggregated.VersionsNumber は、結合型の Details データ ソースの結合レコード数を返すように構成した GroupBy 型の DetailsSummary データ ソースの VersionsNumber 集計フィールドに Set2.Summary.VersionsNumber 項目がバインドされていることを示します。
    • [実行場所] オプションはクエリとして構成されます。つまり、この GroupBy データ ソースは、データベース レベルで直接 SQL 呼び出しとして実行時に実行されます。 この動作が可能なのは、Join タイプの基本データ ソース Details が、データベース レベルで実行されるように構成されているためです。

    GROUPBY データ ソース パラメーター ページのスクリーンショット。

  9. ページを閉じます。

  10. キャンセルを選択します。

ER 形式の実行

  1. 最初のセッションと同じ資格情報と会社を使用して、Web ブラウザーの 2 番目のセッションで Finance または RCS にアクセスします。

  2. 組織管理>電子申告>構成 に移動します。

  3. 結合データ ソースを知るためのモデル構成を展開します。

  4. 結合データ ソースを知るための形式構成を選択します。

  5. デザイナー をクリックします。

  6. 詳細を表示を選択します。

  7. マッピングを選択します。

  8. 展開 / 折りたたみを選択します。

    この形式では、生成されたテキスト ファイルに、ER 構成のすべてのバージョン (バージョン シーケンス) の新しい行が設定されます。 生成される各行には、現在の構成を所有する構成プロバイダーの名前、構成名、および構成バージョンがセミコロンで区切って含まれます。 生成されたファイルの最後の行には、検出されたバージョンの ER 構成 (概要 シーケンス) の数が含まれます。

    [ER 形式デザイナー] ページの [書式] タブのスクリーンショット。

    データ ソースと概要データ ソースは、生成されたファイルに構成バージョンの詳細を設定します。

    • Set1 データ モデルは、ER 形式の実行時にユーザー ダイアログ ページで実行時にセレクター データ ソースに対して [いいえ] を選択した場合に情報を提供します。
    • Set2 データ モデルは、実行時にユーザー ダイアログ ページでセレクター データ ソースに対して [はい] を選択すると情報を提供します。

    [ER 形式デザイナー] ページの [マッピング] タブのスクリーンショット。

  9. 実行を選択します。

  10. ダイアログ ページで、いいえ結合データ ソースの使用フィールドで選択します。

  11. OKを選択します。

  12. 生成されたファイルを確認します。

    JOIN データ ソースを使用していない電子レポート パラメーター生成ファイルのスクリーンショット。

ER 形式実行追跡の分析

  1. Finance または RCS の最初のセッションで、デザイナーを選択します。

  2. パフォーマンスの追跡を選択します。

  3. パフォーマンスの追跡グリッドで、現在のモデル マッピング コンポーネントを使用した ER 形式の、最新の実行追跡の最上位レコードを選択します。

  4. OKを選択します。

    実行統計は、アプリケーション テーブルへの重複した呼び出しについて通知します。

    • このプロセスは 、ERSolutionVersionTable テーブルに構成バージョン レコードがある場合と同じ回数だけ ERSolutionTable を 呼び出しますが、このような呼び出しの数を減らしてパフォーマンスを向上させることができます。
    • プロセスは、プロセスが ERSolutionVersionTable テーブルで検出するすべての構成バージョン レコードに対して ERVendorTable を 2 回呼び出しますが、そのような呼び出しの数を減らすことができます。

    ER モデル マッピング デザイナー ページの実行統計のスクリーンショット。

  5. ページを閉じます。

ER 形式の実行

  1. Finance または RCS の 2 番目のセッションを使用して、Web ブラウザー タブに切り替えます。

  2. 実行を選択します。

  3. ダイアログ ページで、はい結合データ ソースの使用フィールドで選択します。

  4. OKを選択します。

  5. 生成されたファイルを確認します。

    JOIN データ ソースを使用して生成された電子レポート パラメーター ファイルのスクリーンショット。

ER 形式実行追跡の分析

  1. Finance または RCS の最初のセッションで、デザイナーを選択します。

  2. パフォーマンスの追跡を選択します。

  3. パフォーマンス トレース グリッドで、現在のモデル マッピング コンポーネントを使用した ER 形式の最新の実行トレースを表す最上位レコードを選択します。

  4. OKを選択します。

    統計情報によって、次の情報が通知されます。

    • アプリケーション データベースは 、ERVendorTableERSolutionTable、および ERSolutionVersionTable テーブルからレコードを取得して、必要なフィールドにアクセスするために 1 回呼び出されます。

    [ER モデル マッピング デザイナー] ページのパフォーマンス統計情報の詳細のスクリーンショット。

    • アプリケーション データベースは、 Details データ ソースで構成された結合を使用して構成バージョンの数を計算するために 1 回呼び出されます。

    アプリケーション データベースの呼び出しを示す ER モデル マッピング デザイナー ページのスクリーンショット。

制限

この記事の例からわかるように、最終的に結合するレコードの個々のデータセットを記述する複数のデータ ソースから JOIN データ ソースを構築できます。 組み込みの ER FILTER 関数を使用して、これらのデータ ソースを構成します。 JOIN データ ソースを超えて呼び出されるようにデータ ソースを構成する場合は、データ選択の条件の一部として会社の範囲を使用できます。 JOINデータソースの初期実装では、このタイプのデータソースには対応していません。 たとえば、JOIN データ ソースの実行範囲内で FILTER ベースのデータ ソースを呼び出し、呼び出されたデータ ソースにデータ選択の条件の一部として会社の範囲が含まれている場合、例外が発生します。

Microsoft Dynamics 365 Finance バージョン 10.0.12 (2020 年 8 月) では、JOIN データ ソースの実行範囲内で呼び出す FILTER ベースのデータ ソースでのデータ選択の条件の一部として、会社の範囲を使用できます。 アプリケーションの クエリ ビルダーには制限があるため、この 会社の範囲は JOIN データソースの最初のデータソースに対してのみサポートされてい ます。

例えば、複数の企業の外国貿易取引のリストと、それらの取引で参照される在庫項目の詳細を取得するには、アプリケーション データベースを 1 回呼び出しをする必要があります。

この場合は、ER モデルマッピングに次のようなアーティファクトを構成します:

  • イントラスタットテーブルを表す イントラスタット ルート データ ソース。
  • 項目InventTable テーブルを表すルート データ ソースです。
  • 会社 取引にアクセスする必要のある会社 (この例では DEMFGBSI) のリストを返すルート データ ソースです。 会社コードは、 Companies.Code で利用できます。
  • X1FILTER (Intrastat, VALUEIN(Intrastat.dataAreaId, Companies, Companies.Code)) を持つルート データ ソースです。 データ選択の条件の一部として、この式には会社の範囲 VALUEIN(Intrastat.dataAreaId, Companies, Companies.Code) の定義が含まれています。
  • X2 データ ソースを X1 データ ソースのネストされた項目として指定します。 これには、式 FILTER (Items, Items.ItemId = X1.ItemId) が含まれ ます。

最後に、X1 を第 1 のデータソース、X2 を第 2 のデータソースとする JOIN データソースを構成することができます。 クエリExecute オプションとして指定することで、ER はこのデータソースをデータベース レベルで直接 SQL 呼び出しとして実行するように強制します。

ER の実行のトレース中に構成されたデータ ソースを実行すると、ER パフォーマンス トレースの一部として ER モデル マッピング デザイナーに次のステートメントが表示されます。

SELECT ... FROM INTRASTAT T1 CROSS JOIN INVENTTABLE T2 WHERE ((T1.PARTITION=?) AND (T1.DATAAREAID IN (N'DEMF',N'GBSI') )) AND ((T2.PARTITION=?) AND (T2.ITEMID=T1.ITEMID AND (T2.DATAAREAID = T1.DATAAREAID) AND (T2.PARTITION = T1.PARTITION))) ORDER BY T1.DISPATCHID,T1.SEQNUM

ノート

実行された JOIN データ ソースに、追加データ ソースの会社範囲が設定されたデータ選択条件を含むように構成した JOIN データ ソースを実行した場合、エラーが発生します。

その他のリソース

電子申告のフォーミュラ デザイナー

パフォーマンス上の問題をトラブルシューティングするため ER 形式の追跡実行