Power Automate の文字列関数: Substring と IndexOf
Microsoft フローで使用できる 2 つの複雑な Power Automate String 関数、substring 関数とindexOf 関数を簡単に学習します。
このチュートリアルでは、データ キャッシュとは何か、そしてそれがなぜ重要なのかを学びます。データ キャッシュには、将来の使用に役立つ可能性のあるデータのビットが保存されます。
今後の測定やアクションで同じ情報が必要な場合、データ キャッシュが必要な情報を提供します。これにより、システムが同じデータセットを再度フェッチする必要がなくなります。
このチュートリアルでは、LuckyTemplates でデータ キャッシュを扱うときに覚えておくべき 8 つの重要な点について説明します。
目次
データキャッシュの定義と目的
データ キャッシュは、ストレージ エンジンによってメモリ内に作成される一時テーブルです。この一時テーブルは数式エンジンに送信され、この情報が反復処理され、クエリに続いてさまざまな操作が実行されます。
フォーミュラ エンジンとストレージ エンジン間のすべての通信は、常にデータ キャッシュの形式で行われます。フォーミュラ エンジンはクエリ プランを準備し、その指示をストレージ エンジンに送信します。次に、ストレージ エンジンはそれを式エンジンに送り返し、式エンジンは結果をユーザーに返します。
数式エンジンは DirectQuery と VertiPaq に保存されているデータに直接アクセスできないため、データ キャッシュはストレージ エンジンに依存します。
ストレージ エンジンによって送信されるデータ キャッシュは非圧縮形式です。これは、Vertipaq ツールに保存されるデータのサイズを削減できることを意味します。
しかし、データ キャッシュを数式エンジンに戻す段階になっても、数式エンジンは圧縮されたデータセットを処理できないため、データ キャッシュを圧縮することはできません。
データ キャッシュが RAM に与える影響とは
ストレージ エンジンが大量のデータ キャッシュを送信すると、ソフトウェアの RAM 上で多くのスペースが必要になります。また、数式エンジンが反復を実行して結果を生成するのにかなりの時間がかかります。
したがって、DAX コードを作成するときは、データ キャッシュ内の行を最小限に抑える方法でコードを作成する必要があることを理解する必要があります。
最良のシナリオは、ビジュアルに表示される行数とデータ キャッシュで返される行数を一致させることです。
ほとんどの場合、同じ量の行を返すのは困難です。この問題が発生した場合は、DAX コードを確認し、ストレージ エンジンによって生成されるデータ キャッシュを最適化する方法でコードを分解する必要があります。
データキャッシュがクエリを最適化する方法
最適化されていない関数
DAX 言語の一部の関数は、ストレージ エンジン用に最適化されていません。これをよりよく理解するために、例を見てみましょう。
たとえば、コードでは、SUMMARIZE を使用する代わりに、関数を使用できます。SUMMARIZE 関数と GROUPBY 関数は同じ操作を実行します。ただし、シナリオによっては顕著な違いがあります。
GROUPBY 関数はストレージ エンジン用に最適化されていません。1,200 万行のファクト テーブルで GROUPBY 関数を使用すると、同じ行数のデータ キャッシュが生成されます。これは、600MB から 1GB までのサイズにすることができます。
このサイズは RAM に大きな負担をかける可能性があります。したがって、 GROUPBY を使用する代わりに、を使用します。SUMMARIZE 関数を使用すると、データ キャッシュ サイズが小さくなります。最上位関数として GROUPBY と組み合わせることができます。
繰り返しの削減
DAX メジャーまたはクエリを作成するときは、バックグラウンドで生成されたコードがストレージ エンジンに適していることを確認する必要があります。
後続のクエリでも使用できるデータ キャッシュを生成する方法で DAX コードを記述する必要があります。これを行う利点は、 VertiPaqを使用して個別のスキャンを実行する代わりに、ストレージ エンジンが同様のクエリが既に受信されているかどうかを確認できることです。
これが真であれば、そのデータ キャッシュがメモリ内で利用可能であることを意味します。したがって、クエリを再度スキャンする代わりに、VertiPaq はクエリをキャッシュ メモリから数式エンジンに返すだけです。
ストレージ エンジン クエリにCALLBACKDATAID 演算子が含まれている場合は、それらのクエリをキャッシュできないことを意味します。同様のクエリがストレージ エンジンに送信された場合、反復が実行されます。
したがって、VertiPaq はクエリを解決するために数式エンジンを呼び出す必要があります。この場合、キャッシュ メモリが使用できないため、全体の実行時間が増加します。
結論
データ キャッシュは、DAX 言語の親友です。記憶域スペースを最大化し、VertiPaq ツールの反復回数を減らす方法で DAX コードを記述するようにしてください。ストレージ エンジンによってすでに作成されているデータ キャッシュを再利用して、クエリの実行時間を短縮できます。
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 を使用して数式内に仮想リレーションシップを作成する方法を説明します。