Power Automate の文字列関数: Substring と IndexOf
Microsoft フローで使用できる 2 つの複雑な Power Automate String 関数、substring 関数とindexOf 関数を簡単に学習します。
とどちらも、DAX クエリでデータを操作および分析するための強力なツールですが、理解することが重要な重要な違いがいくつかあります。
このブログでは、 DAX Studio のCALCULAETABLE関数とそのクエリ プランについて説明し、 FILTER関数との違いを理解します。最後には、データ分析のニーズに適した関数を選択する方法をよりよく理解できるようになります。
デモのために、以下の DAX コードを使用します。
このコードを実行すると、ブランドと色を示すテーブルが表示されます。
[クエリ プラン]タブでは、数式エンジンのCrossApply演算子に対応するコードを取得します。
同時に、コードは [サーバー タイミング]タブで製品の色とブランドのみを取得していることがわかります。
目次
CALCULATABLE の DAX Studio サーバーのタイミング結果
例として、製品の色をフィルタリングして、赤および/または黒のみを表示してみましょう。
これを行うには、FILTER 関数を使用します。これを実行すると、サーバー タイミングに FILTER 引数がxmSQL コードに適用されていないことが表示されます。
ただし、CALCULAETABLE 関数を使用すると、[サーバー タイミング] タブのクエリで、結果が製品の色でフィルターされたことが表示されます。
DAX Studio の CALCULATABLE クエリ プラン
各関数のクエリ プランを見てみましょう。
CALCULAETABLE は、コード内の最上位関数であり、要件に依存しないため、論理クエリ プランの最初の行にあります。
CALCULAETABLE 関数のクエリ プランを読み取るときは、最初の引数から始めません。まず、使用されるフィルター コンテキストを理解する必要があります。それでは、5行目に行きましょう。
フィルターが適用されているため、VertiPaqオペレーターには製品の色の列が必要であることがわかります。次に、この列をスキャンし、Not IsEmpty フィルターの組み合わせを使用して、各行に対して製品の色をチェックします。
フィルター コンテキストが準備された後、引数が実行されます。
後から考えると、FILTER 関数を使用すると、別のクエリ プランが表示されるため、フィルター コンテキストを識別する前に CROSSJOIN 引数が実行されます。
このアプローチの欠点は、フィルター条件がストレージ エンジンにプッシュされないことです。xmSQL 内でWHERE句を使用することはできないため、フォーミュラ エンジンに大きな負担がかかります。
また、複数のテーブルを操作している場合、CROSSJOIN 関数のフィルターの組み合わせは膨大になります。これにより、DAX コードのパフォーマンスが低下します。したがって、ほとんどの場合、CALCULAETABLE 関数を使用することをお勧めします。
したがって、数式エンジンですべての計算を実行する代わりに、XMSQL コードの WHERE クラス内にフィルター条件を挿入できます。
同様の DAX 関数のコンテキスト遷移
サーバーのタイミング
この概念は CALCULATE 関数にも当てはまります。例として以下の DAX コードを使用してみましょう。
メジャーには自動的に CALCULATE 関数が追加されます。
このコードを実行すると、各色の総売上高を示す表が取得されます。
[サーバー タイミング] タブでは、コードが 2 つのクエリを実行していることがわかります。最初のクエリは、Products テーブルに関する Sales テーブルからの Sales 金額の合計を計算します。
一方、2 番目のクエリは Products テーブルから製品の色を再度取得します。これは、DAX コードの関数に対応します。
Formula Engine は、2 つのクエリのデータ キャッシュを並べて配置します。まず 2 番目のデータ キャッシュから値を取得し、次に 1 番目のデータ キャッシュでルックアップを実行します。
クエリプラン
引数により論理クエリ プランが製品の色をスキャンします。
次に、VertiPaq は製品の色に応じて総売上高を合計します。製品のカラー値を同等のフィルター コンテキストに変換するコンテキスト遷移を実行します。
コンテキスト遷移によって作成されたフィルターは、クエリ プランのdependOnColsプロパティに変換されます。VertiPaq は、総売上高の計算に必要な列をスキャンした後、売上数量に正味価格を乗算します。
その後、合計売上が通貨データ型の形式で結果として返されます。最後に、ADDCOLUMNS は、Color と Total Sales 金額を含む 2 つの列を含むテーブルを返します。
結論
クエリ プランが異なれば効率のレベルも異なる可能性があるため、クエリ プランはクエリのパフォーマンスに大きな影響を与える可能性があります。
DAX クエリで CALCULAETABLE 関数と FILTER 関数を使用する場合、クエリ プランは、特定のシナリオや、使用されている特定の数式やクエリ エンジンの機能などのさまざまな要因に応じて異なる場合があります。
一般に、特定のシナリオに対して最も効率的なアプローチを決定するために、さまざまなクエリ プランのパフォーマンスをテストして比較することをお勧めします。
ではごきげんよう、
Microsoft フローで使用できる 2 つの複雑な Power Automate String 関数、substring 関数とindexOf 関数を簡単に学習します。
LuckyTemplates ツールチップを使用すると、より多くの情報を 1 つのレポート ページに圧縮できます。効果的な視覚化の手法を学ぶことができます。
Power Automate で HTTP 要求を作成し、データを受信する方法を学んでいます。
LuckyTemplates で簡単に日付テーブルを作成する方法について学びましょう。データの分析と視覚化のための効果的なツールとして活用できます。
SharePoint 列の検証の数式を使用して、ユーザーからの入力を制限および検証する方法を学びます。
SharePoint リストを Excel ファイルおよび CSV ファイルにエクスポートする方法を学び、さまざまな状況に最適なエクスポート方法を決定できるようにします。
ユーザーがコンピューターから離れているときに、オンプレミス データ ゲートウェイを使用して Power Automate がデスクトップ アプリケーションにアクセスできるようにする方法を説明します。
DAX 数式で LASTNONBLANK 関数を使用して、データ分析の深い洞察を得る方法を学びます。
LuckyTemplates で予算分析とレポートを実行しながら、CROSSJOIN 関数を使用して 2 つのデータ テーブルをバインドする方法を学びます。
このチュートリアルでは、LuckyTemplates TREATAS を使用して数式内に仮想リレーションシップを作成する方法を説明します。