Power Automate の文字列関数: Substring と IndexOf
Microsoft フローで使用できる 2 つの複雑な Power Automate String 関数、substring 関数とindexOf 関数を簡単に学習します。
休日をカウントするか、休日をカウントせずに、2 つの日付の間の稼働日を計算する方法を説明します。で何度も質問されてきたトピックです。
また、これがこのタイム インテリジェンス シリーズを締めくくるのに最適な方法になると信じています。これは、これまでに説明した他の多くの要素をカバーしていることを知っているからです。これらの要素には、休日テーブルの作成、拡張日付テーブルの作成、関数の使用などが含まれます。このチュートリアルの完全なビデオは、このブログの下部でご覧いただけます。
目次
2 つの日付間の勤務日を計算する方法
勤務日を計算するために使用できるさまざまなアプローチについて説明します。
Excel では、 NETWORKDAYS関数を使用して、勤務日を簡単に計算できます。ただし、DAX にはそのような機能がないため、これを回避する方法について説明します。
これを行う 1 つの方法は、拡張日付テーブルのいくつかの要素を使用することです。
もう 1 つのオプションは、thebiccountant.com ブログの Imke Feldmann から得たアプローチを使用することです。彼女は、Power Query から直接呼び出すことができるカスタム NetworkDays 関数を作成し、プロセスをはるかに高速化して複雑さを軽減しました。
これらのアプローチがどのように機能するかを示すために、非常に一般的なシナリオを使用します。
匿名化したプロジェクトが 100 件あります。
各プロジェクトには開始日と終了日もあります。
単純な経過日数メジャーも作成しました。これは基本的に、各開始日と終了日の間の生の日数です。関数を使用しました。これは、営業日の日付を区別するのに便利な関数です。
データモデルは非常にシンプルです。これには、日付とプロジェクトのテーブルが含まれています。
また、プロジェクト ID、開始日、終了日を含むファクト テーブルも表示されます。
比較のために、Excel (Power Bi ではない) を使用してNetworkDays (休日の有無にかかわらず) も計算しました。
もちろん、同じことをして Excel からデータを取り込むこともできます。ただし、ここでの目標は、Excel を使用せずに LuckyTemplates を使用して稼働日数を計算することです。
DAX を使用した日付間の勤務日の計算
日付のカウントを扱う場合は、Dates テーブルで
また、DATESBETWEENを使用して 、開始日と終了日の間のフィールドを絞り込みました。また、IsWorkingDayを追加して、就業日の場合はである必要があるという単純なブール ロジックを適用しました。を返します。
スライサーのコンテキストを考慮するために、フィルターで仕上げました。
休日を含むバージョンに関しては、今説明した措置と非常に似ています。
これは、 DATESBETWEEN関数を使用した場合と同じ式です。とIsHolidayだけ追加しました。
ここでも最後にALLSELECTED関数を使用しました。
これら 2 つのメジャーをテーブルにドラッグするとどうなるかを見てください。
予想どおり、休日を含む勤務日は Excel の休日を含む列と完全に一致します。同じことが休日なしの勤務日列にも当てはまり、休日なしの Excel 列と一致します。
Power Query を使用した勤務日の計算
thebiccountant.com ブログの Imke Feldmann が説明しているアプローチは、Power Query を使用する場合にさらに簡単なソリューションを提供します。
NETWORKDAYS 関数に関する彼女のブログの中で、Power Query で呼び出すことができる M コードを提供しました。
彼女のブログから M コードをコピーするだけです。
次に、Power Queryに移動し、 [新しいソース]で空のクエリを開きます。
高度なエディターに移動します。
次に、コード全体をページに貼り付けます。コードにエラーがないことを確認するには、緑色のチェックが付いていることを確認してください。
呼び出すと、このテンプレートが表示されます。
ここに何を入力するかはあまり重要ではないので、2018 年 1 月 1 日から 2020 年 1 月 1 日までとします。
これで、クエリの下に表示されるようになります。後で使いやすいように名前を変更します。
Networkdaysという名前にします。
これで、そのクエリの使用を開始できます。Dataに進みます。
次に、[列の追加]で[カスタム関数の呼び出し]をクリックします。
これをNWDと呼び、Networkdays機能を使用します。
次に、以下のドロップダウン メニューから開始日と終了日を選択します。
ここでは、週の始まりを月曜日から他のものに変更するオプションが提供されます。
この目的であれば月曜日で良いのでそのままにしておきます。次に、「OK」をクリックします。
ご覧のとおり、Excel の NetworkDays列に相当するNetworkDaysがすぐに計算されます。
ここで、休日を除外できるようにこれを微調整してみましょう。ホリデーテーブルに行くだけです。
テンプレートを思い出してください。ここでは、Holiday テーブルが 3 番目のパラメーターです。
したがって、ここでは休日テーブルを使用し、日付列を参照することにします。
ここでチェックマークをクリックして変更を適用します。
[00:11:00]
現在、更新され、すべての休日が削除されました。休日のないExcel NetworkDaysの列とまったく同じです。
この列の名前を「NWD 休日なし」に変更します。
日付テーブルに勤務日と週末の数値を追加する: LuckyTemplates のタイム インテリジェンス テクニック
DAX を使用して LuckyTemplates で勤務日の数値を紹介する Power
BI での平均を計算する: DAX を使用して平日または週末の結果を分離する
結論
私が使用した両方のアプローチは互いに大きく異なっていましたが、両方とも同じ結果が得られたことがわかります。これは、探している特定の Excel 関数に直接対応する関数がない場合でも、LuckyTemplates を最大限に活用する方法が実際にはたくさんあることを示しているだけです。
これは、Time Intelligence シリーズにとって素晴らしい成果でした。Melissa Dekorte と協力して、これらの素晴らしいタイム インテリジェンスのシナリオをすべて紹介するのは楽しかったです。
ここで特に強調したいことの 1 つは、DAX が LuckyTemplates の最も興味深い部分であるということです。ただし、LuckyTemplates の詳細をマスターすると、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 を使用して数式内に仮想リレーションシップを作成する方法を説明します。