LuckyTemplates で Power Query を使用した組み合わせ分析

LuckyTemplates で Power Query を使用した組み合わせ分析

組み合わせ分析と呼ばれるものについて深く掘り下げてみたいと思います。これは、所定のルールに従ってセットの要素を選択して配置することとして定義できます。難解に聞こえるかもしれませんが、実際には非常に実用的な使用例がいくつかあります。このチュートリアルの完全なビデオは、このブログの下部でご覧いただけます。

このチュートリアルでは、LuckyTemplates の Power Query を使用してこれを行う方法を説明します。

目次

組み合わせ分析の事例

この組み合わせ分析の例では、6 つの倉庫のリストがあり、3 つの一意のセットをすべて生成する必要があるというタスクが行われました。非常に簡単な問題のように思えますが、これは言語が本当に重要なケースの 1 つです。

ここでの正解は、216、120、56、または 20 のいずれかです。したがって、その一意のセットを定義する方法と規定したルールによっては、セットを正しく取得できなかった場合、10 倍も誤差が生じる可能性があります。

LuckyTemplates で Power Query を使用した組み合わせ分析

したがって、ここでは 2 つの側面が重要になります。1つ目は「順番は重要ですか?」では、3 つの 3 セットについて話しているとき、ABC は BCA に相当するのでしょうか? では、順序は重要なのでしょうか?順序が重要である場合は、順列について話します。

順序が重要になる可能性のある順列の良い例は、移動時間の場合です (ここでは倉庫のコンテキストについて話しています)。倉庫 A、倉庫 B、倉庫 C の順に訪問する場合、交通渋滞による移動時間、つまり各倉庫に到着する時間は、注文によって大きく異なる可能性があります。そこであなたは彼らを訪問します。

その裏を返せば、「順序は関係ない」ということです。この場合、順列ではなく組み合わせについて話しています。ここでの一般的な使用例は距離です。たとえば、カラスが飛ぶとき、A から B、C までの距離は、B から C、A までの距離と何ら変わりません。これらは組み合わせのコンテキストで考慮されます。

組み合わせは互いに重複しているとみなされます。一方、順列のコンテキストでは、それらは一意であるとみなされます。

ご覧のとおり、コンビネーション ロックは実際には順列ロックである必要があります。その場合、順序が重要になり、組み合わせではなく順列になります。

重要な 2 番目の質問または側面は、「アイテムを一度選択すると、再度選択できますか?」です。たとえば、最初の倉庫として A を選択した場合、もう一度 A を選択できますか、それとも毎回独自の要素を選択する必要がありますか?

ここで使用する用語は「交換あり」または「交換なし」です。したがって、アイテムが再び選択できる場合、それは交換あり、つまりあなたがそれを選択することを意味します。そしてある意味では、それは選択ビンに戻され、再び選択されることになります。答えが「いいえ」の場合は、代替品はありません。

したがって、このソリューションでは、置換による置換が最も制限が少ないことがわかります。これで 216 個の固有のセットが得られます。そして、置換なしの組み合わせが最も制限的で、20 通りになります。

LuckyTemplates で Power Query を使用した組み合わせ分析

これらの数式は、 Power Query の結果を確認する方法としてのみ使用します。したがって、216、120、56、20 を覚えておきます。次に、Power Query にジャンプして、この組み合わせ分析がどのように行われるかを見てみましょう。

組み合わせ分析: Power Query での順列

Power Query では、6 つの名前付きウェアハウスを含む非常に単純なケースを示します。

LuckyTemplates で Power Query を使用した組み合わせ分析

そして、私はこの Power Query M 関数を開発し、組み合わせと順列を処理するために使用しました。

LuckyTemplates で Power Query を使用した組み合わせ分析

まず、最初のユースケースを開発します。これは、最も制限の少ないreplace を使用した順列です。Power Query でこれを行う方法は、このWarehousesテーブルを取得して参照することです (DAX では、CROSSJOINを使用します)。

LuckyTemplates で Power Query を使用した組み合わせ分析

これをPer w Rep (置換を伴う順列)と呼びます。

LuckyTemplates で Power Query を使用した組み合わせ分析

Power Query で相互結合を行う方法はいくつかあります。私が見つけた最も簡単な方法は、 [列を追加][カスタム列] の順に移動することです。カスタム列の式で、Warehousesテーブルを参照します。

LuckyTemplates で Power Query を使用した組み合わせ分析

[OK] をクリックすると、ネストされたテーブルが生成されることがわかります。

LuckyTemplates で Power Query を使用した組み合わせ分析

次に、それを展開し、[元の列名をプレフィックスとして使用する]クリックを解除します

LuckyTemplates で Power Query を使用した組み合わせ分析

そして、このLocation.1を取得します。これは、2 つの可能なすべての組み合わせです。したがって、最初の 6 つの参照を他の 6 つの組み合わせに対して使用します。2 番目の 6 つは、36 個の異なるセットができるまで同じことを繰り返します。

LuckyTemplates で Power Query を使用した組み合わせ分析

これをもう一度繰り返すことで 3 つ目を実行できます。そこで、「列の追加」、次にカスタム列、そして「ウェアハウス」の順に進みます。

LuckyTemplates で Power Query を使用した組み合わせ分析

そして、置換を伴う順列として 216 行が得られます。

LuckyTemplates で Power Query を使用した組み合わせ分析

ここから下を見ると、3 列、216 行であることがわかります。

LuckyTemplates で Power Query を使用した組み合わせ分析

次の使用例は、置換なしの置換です。ここで考えているのは、基本的に、繰り返される要素を持つすべてのものです。この表では、行 1 から行 8 までを見ていきます。

LuckyTemplates で Power Query を使用した組み合わせ分析

そのために、この関数fxSortAndIsDistinctを見てみましょう。

LuckyTemplates で Power Query を使用した組み合わせ分析

Advanced Editor では、これが基本的にテーブルを要求し、SortLocsを実行していることがわかります。ただし、ここで「置換あり」または「置換なし」に関して重要なのは、これがIsDistinct関数であるということです。これは基本的に要素のリストを取得し、それが個別のものであるか、項目のリスト内に重複があるかどうか、真か偽かを判断するだけです。

LuckyTemplates で Power Query を使用した組み合わせ分析

ここでPerm w Repを選択し、Invokeを押します。

LuckyTemplates で Power Query を使用した組み合わせ分析

これにより、2 つの新しい列SortLocsIsDistinctが得られます。ここで、最初の 8 レコードには重複があり、9 番目のレコードで初めて明確な . が確認されたことを思い出してください。このため、ここで 9 行目が true として表示される最初の行となります。

LuckyTemplates で Power Query を使用した組み合わせ分析

階乗計算で得られた数値を思い出してみると、区別できないレコードを除外すると 120 件のレコードが予想されます。そこで、ここでフィルタリングを行って FALSE を取り除いてみましょう。

LuckyTemplates で Power Query を使用した組み合わせ分析

これを実行すると、期待していた 120 行がここに表示されます。ここで、これを「Perm wo Rep (置換なしの順列)」という名前に変更しましょう。

LuckyTemplates で Power Query を使用した組み合わせ分析

組み合わせ分析: Power Query での組み合わせ

次に、 replace との組み合わせを実行します。これを行うには、プロセスを再度実行し、ステップ (呼び出された関数) を繰り返すだけです。したがって、重複があるのは問題ありませんが、同じ要素を持つが順序が異なるセットは望ましくありません。

LuckyTemplates で Power Query を使用した組み合わせ分析

この場合、組み合わせについて話しているとき。ABC が等しい、BCA が CAB に等しい、ということを思い出していただければ、これらはすべて相互に重複していると見なされます。そして、それを決定する方法は、Sort 関数 ( fxSortAndIsDistinct ) を使用することです。

詳細エディターの関数に戻ると、2 番目の列でそのリストを取得し、アルファベット順に並べ替えたことがわかります。次に、そのリストからカンマで区切られた値を抽出しました。これで、各セットがアルファベット順にソートされました。重複を見つけやすいように順序を正規化しました。

LuckyTemplates で Power Query を使用した組み合わせ分析

この呼び出された関数に戻ると、ここでは 56 個のレコードを探していることに注意してください。そこで、この種の場所 ( SortLocs )を取得し、重複を削除します

LuckyTemplates で Power Query を使用した組み合わせ分析

これで、56 行が得られます。

LuckyTemplates で Power Query を使用した組み合わせ分析

これが 3 番目の使用例です。これをCC w Rep (置換との組み合わせ)という名前に変更しましょう。

LuckyTemplates で Power Query を使用した組み合わせ分析

置換による置換 (Perm w Rep) テーブルを再度取得し、同じパターン (呼び出し) を実行して、これを締めくくりましょう。次に、重複(SortLocs 列) を削除します。これは組み合わせであり、順序は重要ではないためです。これは置換なしなので、個別の list のみが必要です。したがって、IsDistinct 列の FALSE をクリックしてオフにします。

LuckyTemplates で Power Query を使用した組み合わせ分析

これで、20 件のレコードが得られます。これで 4 つのユースケースがすべて完成しました。

LuckyTemplates で Power Query を使用した組み合わせ分析


LuckyTemplates で日付テーブルの列を並べ替える LuckyTemplates の
M コードの初心者ガイド Power
BI で日付テーブル関数をテーブル クエリに変換する

結論

これで 4 つのユースケースがすべて完成しました。置換要素や個別の要素を制御できる組み合わせ分析を開発するという点で、これがいかに強力であるかがわかります。

これは、部分的に置換する場合や、最初の要素では重複した要素を選択するが、2 回目では選択しない場合など、より複雑な場合にも当てはまります。これはPower Query内で適切に処理できます。

これがお役に立てば幸いです。さらに詳しい内容については、以下のリンクをご覧ください。このチュートリアルの完全なビデオを以下で見ることもできます。

ではごきげんよう!


Power Automate の文字列関数: Substring と IndexOf

Power Automate の文字列関数: Substring と IndexOf

Microsoft フローで使用できる 2 つの複雑な Power Automate String 関数、substring 関数とindexOf 関数を簡単に学習します。

LuckyTemplates でビジュアル ツールチップを作成する

LuckyTemplates でビジュアル ツールチップを作成する

LuckyTemplates ツールチップを使用すると、より多くの情報を 1 つのレポート ページに圧縮できます。効果的な視覚化の手法を学ぶことができます。

Power Automate で HTTP 要求を行う

Power Automate で HTTP 要求を行う

Power Automate で HTTP 要求を作成し、データを受信する方法を学んでいます。

LuckyTemplates で日付テーブルを作成する方法

LuckyTemplates で日付テーブルを作成する方法

LuckyTemplates で簡単に日付テーブルを作成する方法について学びましょう。データの分析と視覚化のための効果的なツールとして活用できます。

2 つの方法による SharePoint 列の検証

2 つの方法による SharePoint 列の検証

SharePoint 列の検証の数式を使用して、ユーザーからの入力を制限および検証する方法を学びます。

SharePoint リストを Excel または CSV ファイルにエクスポート

SharePoint リストを Excel または CSV ファイルにエクスポート

SharePoint リストを Excel ファイルおよび CSV ファイルにエクスポートする方法を学び、さまざまな状況に最適なエクスポート方法を決定できるようにします。

Power Automate のオンプレミス データ ゲートウェイ

Power Automate のオンプレミス データ ゲートウェイ

ユーザーがコンピューターから離れているときに、オンプレミス データ ゲートウェイを使用して Power Automate がデスクトップ アプリケーションにアクセスできるようにする方法を説明します。

DAX 数式での LASTNONBLANK の使用

DAX 数式での LASTNONBLANK の使用

DAX 数式で LASTNONBLANK 関数を使用して、データ分析の深い洞察を得る方法を学びます。

CROSSJOIN 関数の使用方法 – LuckyTemplates および DAX チュートリアル

CROSSJOIN 関数の使用方法 – LuckyTemplates および DAX チュートリアル

LuckyTemplates で予算分析とレポートを実行しながら、CROSSJOIN 関数を使用して 2 つのデータ テーブルをバインドする方法を学びます。

TREATAS 関数を使用して LuckyTemplates で仮想リレーションシップを作成する

TREATAS 関数を使用して LuckyTemplates で仮想リレーションシップを作成する

このチュートリアルでは、LuckyTemplates TREATAS を使用して数式内に仮想リレーションシップを作成する方法を説明します。