データのクエリ

完了

Dataverse コネクタには、テーブルからデータを取得するために設計されたアクションがいくつかあります。 このユニットでは、最も一般的な 2 つについて説明します。 ID で行を取得するアクションは、指定した一意の ID を持つ行を 1 つ取得します。 一意の ID がわからない場合は行の一覧表示アクションを使用できます。これはフィルター条件と一致する行を 0 件以上返します。

これらのアクションのオプションを広げると、選択した環境から... アクションも利用できるようになり、構築している環境以外の環境で同じアクションを使用可能になります。 データを取得するために利用できるオプションをいくつか見てみましょう。

列の選択

列の選択 オプションは、アクションから返される列を制限します。 後に続くフロー ステップに必要なデータに応じて、列のリストを設定する必要があります。 列のリストを提供することで、そのフローを効率化できます。 テーブル列の論理名を必ず使用してください。これは列プロパティの詳細オプション セクションで確認できます。 たとえば、"連絡先" テーブルの "名" 列と "姓" 列を含めるべき場合は、次に示す列のカンマ区切りリストを指定する必要があります。

firstname,lastname

後に続くフローのステップを設定する際に、列のリストを指定することで、動的コンテンツに表示される列が制限されます。 必要な列が表示されない場合は、データを取得するアクションの列の選択オプションを確認してください。

拡張クエリ

既定では、"データの取得" アクションを実行すると、アクションに指定された主テーブルからのみデータが取得されます。 拡張クエリ オプションを使用すると、OData スタイル式を提供して関連テーブルのデータを含めることができます。 このオプションは、詳細パラメーターの下にあります。

たとえば、"アカウント" テーブルには "連絡先" テーブルとのリレーションシップが存在し、そのアカウントの取引先責任者を示します。 取引先責任者の "氏名" 列と ID を、アクションの出力に含める場合の OData 式を、次の例で示します。

primarycontactid($select=contactid,fullname)

この式により、アクションの出力にデータが含まれますが、選択した動的コンテンツ ペインのデータ列は含まれません。 関連データを使用する場合は、ワークフロー式を使用してデータにアクセスする必要があります。

"ID で行を取得する" アクションを使用する

通常は ID で行を取得するアクションを使用して、フロー ロジックの一部として Dataverse テーブルのデータをさらに取得します。 たとえば、新しい アカウント テーブル行の追加でフローがトリガーされた場合は、ID で行を取得する アクションで関連する取引先責任者のメールを取得できます。 この例では、トリガーの出力として行のデータが提供されるため、アカウントを取得する際に ID で行を取得する アクションを使用する必要がありません。

場合により、フロー ロジックで ID で行を取得するアクションをもう一度使用して、最新のデータを確実に取得する必要があります。 たとえば、承認のステップでフローが一時停止した場合、最後にデータを取得してから数日が経過する可能性があります。 この場合は、承認された後で ID で行を取得するアクションを使用し、最新のデータを取得できます。 この手法により、古いデータに基づいたフローのアクション実行を防ぐことができます。

そのステップで作成するべき行の ID が null になる可能性がある場合、ID で行を取得するステップを実行する前に、値の条件確認を完了することが最善のアクションです。 行 ID が null である場合、そのステップは失敗します。 もう 1 つの一般的なエラーは、行のデータを読み取るアクセス許可がない場合に発生します。

"行の一覧表示" アクションを使用する

行の一覧表示アクションは、シンプルまたは複雑な条件を指定して返すべきデータ行を決定できるため、強力です。 このアクションでは、この条件を指定する方法として、OData スタイル式および Dataverse FetchXML という 2 つのスタイルに対応しています。 両方のスタイルの条件を使用して、シンプルな条件と複雑な条件を作成できます。 ほとんどの場合、気に入った方のスタイルを使用して構いません。 ただし、いくつかのコミュニティ ツールは FetchXML に対応しており、より複雑な条件を簡単に作成できます。

5,000 件を超える行を取得する

このアクションは既定では 5,000 件を超える行を返しません。 さらに多くのデータを返すべき場合は、設定タブから改ページ機能をオンにできます。 改ページをオンにすると、ページ サイズに最大 100,000 行を指定できます。 データのページが複数存在するかもしれない場合は、ページング トークンを取得して後に続くページの取得内容を渡し、そのフローに含まれるページを手動で処理する必要があります。 詳細については、改ページをオンにするを参照してください。

5,000 行に達してもエラーが発生しないため、今後の必要性を必ず考慮してください。 さらに、すべてのデータを取得できるわけではありません。 可能であれば、フローが処理する結果が最小になるように条件を作成します。

OData スタイル条件を使用する

アクションの行のフィルター プロパティに OData スタイル フィルターを指定し、その条件と一致する行だけを返すように制限できます。 行のフィルター プロパティの式を作成する際は、その列の論理名を必ず使用します。この論理名は列のプロパティの詳細オプション セクションに記載されています。 次に示すロジックは、連絡先をフィルターして John という名を含む行をすべて返す、シンプルな例です。

firstname eq 'John'

また、標準のクエリ フィルター演算子とクエリ関数も使用できます。 たとえば次に示すロジックでは、含める関数を使用するようにフィルターを変更しています。

contains(firstname,'John')

詳細については、標準フィルター演算子クエリ関数の例を参照してください。

andornot などの論理演算子を使用できます。 たとえば次のロジックは、"売上" 列の値が 2001 ~ 99999 の範囲内であることを確認します。

revenue lt 100000 and revenue gt 2000

次に示すように、かっこ () を論理演算子とともに使用して優先順位を指定すると、複雑な式を評価できます。

(contains(name,'sample') or contains(name,'test')) and revenue gt 5000

また、関連データでもフィルターできます。 たとえば次に示す式は、Susanna という名前の取引先責任者を持つアカウント テーブルの行を返します。

primarycontactid/fullname eq 'Susanna (sample)'

行のフィルター 式とともに、並べ替え プロパティを使用すると、アクションによる行の出力の順序を決定できます。 この名前には列の論理名のカンマ区切りリストを必ず指定します。 列名のみを指定した場合、その列は昇順で並べ替えられます。 ascdesc の接頭辞を指定すると、それぞれ昇順または降順を設定できます。

行数 プロパティにより、返すべき行の数を指定できます。 たとえば、一致する行が存在するかどうかだけを確認するべき場合は、行を 1 件返せば十分です。

ヒント

フローをテストするときに、行数を 1 (または別の小さい数値) に設定してテストをスピードアップできます。 テーブルに何千行ものデータがある場合、このパラメーターを使用すると、フローの開発中にすばやくトラブルシューティングを行うことができます。

FetchXML スタイル条件を使用する

FetchXML は、Dataverse 独自の XML ベースのクエリ言語であり、データのクエリに使用できます。 FetchXML を作成し、このスタイルを 行の一覧表示 アクションから出力される行に対するフィルター条件として使用できます。 この XML は手動でも作成できます。また、Power Apps モデル駆動型アプリケーションの 高度な検索 を使用してフィルターを構築し、FetchXML をダウンロードすることもできます。

FetchXML には、OData スタイル条件の 列の選択並べ替え拡張クエリ行のフィルター と同等の機能が含まれています。

次の式は FetchXML の例であり、アクティブな状態と "Contoso" を含む名前を持つ行で "アカウント" テーブルをフィルターします。 この例では、アカウントの行と関連した取引先責任者のメールも返します。

<fetch>
  <entity name="account">
    <attribute name="name"/>
    <attribute name="address1_city"/>
    <attribute name="primarycontactid"/>
    <attribute name="telephone1"/>
    <attribute name="accountid"/>
    <order attribute="name" descending="false"/>
    <filter type="and">
      <condition attribute="statecode" operator="eq" value="0"/>
      <condition attribute="name" operator="like" value="%Contoso%"/>
    </filter>
    <link-entity alias="accountprimarycontactidcontactcontactid" name="contact" from="contactid" to="primarycontactid" link-type="outer" visible="false">
      <attribute name="emailaddress1"/>
    </link-entity>
  </entity>
</fetch>

詳細については、FetchXML を使用したクエリの作成を参照してください。

FetchXML 条件と共に 行の一覧表示 アクションを使用している場合、現時点では集計クエリには対応していません。