ここでは、Power Automate フローや Power Automate フローを用いた Power App など、Learn365 API でのアクションのパフォーマンスを最適化するためのヒントをご紹介します。
- $expand の使用を抑える
- $select を使用する
- アクションを組み合わせて使用する
- フローの構成とパラメータ
- UserLoginName の使用を控える
- CourseSession エンティティの使用を控える
$expand の使用を抑える
$expand フィールドは特定のデータを取得するために使用できますが、Power Automate フローで Learn365 API 呼び出す場合は、他の方法で取得できない情報に対してのみ expand を使用することが推奨されます。
ここで大事なのは、必要なデータを正確に把握し、追加で$expand(展開)することなく、関連するテーブルからデータを取得することです。
例:
特定のユーザーの登録(enrollments)を取得するには、Courses テーブルで ”Enrollments" を展開($expand)するのではなく、Enrollments テーブル の $filter(フィルター)で UserId による絞り込みを行います。
似たようなケースで、特定のユーザーの出席(Attendances)は、この Enrollments テーブルを展開($expand)しないと取得できないため、API コールで $expand を使用する必要があります。
$select を使用する
「Enrollments」テーブルや「Courses」テーブルなどの大きなテーブルからデータを取得するには、フローまたはアプリで使用するパラメーターだけを指定することを推奨します。
この場合、$select でパラメータを指定して、レスポンスに限られたデータを返すようにして、応答にかかる時間を短縮することができます。
関連するパラメータを省略すると、レスポンスにかかる時間が長くなったり、不要なデータが数多く含まれる可能性があります。
例:
フローで CourseSessions を展開する場合、クエリ内で $select を使用することで パフォーマンスを向上させることができます。
これを行うには、CourseSessions($select=Id,StartDateLocal,EndDateLocal) のように、パラメータを指定します。
パラメータが指定されていない場合、TakenSeatsCount パラメータが複雑になる、フローの実行にかかる時間が長くなります。
アクションを組み合わせて使用する
パフォーマンス向上のために、複数の $expand と $filter を含む複雑なクエリーを作成する代わりに、後で組み合わせて分析できる別々のレスポンスを持ついくつかのアクションをフローに追加します。
例:
Courses テーブルから情報を取得する API コールがあります。そこからコースの Enrollments を展開($expand)し、Enrollments の中で CourseSessions を展開($expand)することもできます。
ですが、この場合別々の2つのコール( 1つは Courses テーブルから特定のデータを取得するコール、もう 1つは Enrollments テーブル内の展開された CourseSessions から登録を取得するコール)を作成することをお勧めします。
フローの構成とパラメータ
フローの構成と使用するパラメータは、必要なデータをどこで取得するかを考慮します。
これは、関連するレスポンスを最も効率的に取得するためも大事なことです。一般的に、同じデータでもさまざまな方法で取得することができます。
データを効率的に取得することで、フローとアプリのパフォーマンスも向上させることができます。
例
特定の認定証に関するデータを取得するには、Enrollments テーブルの Certificate データを展開し、関連する認定証を検索するなど、いくつかの方法があります。
ですが、既に CourseId と UserId がわかっている場合、Certificates エンドポイントを利用することで、より効率的にデータを取得することができます。
UserLoginName の使用を控える
UserLoginName を使用すると、構文によってフローが複雑になる可能性があります。
この問題の事例とその修正方法については、「LoginNameパラメータを使用したフローを修正する 」をご参照ください。
効率を良くするには、$filter(フィルター)やフロー アクションで「UserId」や「DirectoryObjectId」を使用します。
CourseSession エンティティの使用を控える
「CourseSession」は非推奨とされており、今後使用することはできません。
API リクエスト body(本文)から手動で削除する必要があります。
代わりに CourseSessions エンティティを使用してください。