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内で適切に処理できます。

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

ではごきげんよう!


Python における Self とは: 実際の例

Python における Self とは: 実際の例

Python における Self とは: 実際の例

RでRDSファイルを保存してロードする方法

RでRDSファイルを保存してロードする方法

R の .rds ファイルからオブジェクトを保存および読み込む方法を学習します。このブログでは、R から LuckyTemplates にオブジェクトをインポートする方法についても説明します。

最初の N 営業日の再考 – DAX コーディング言語ソリューション

最初の N 営業日の再考 – DAX コーディング言語ソリューション

この DAX コーディング言語チュートリアルでは、GENERATE 関数の使用方法とメジャー タイトルを動的に変更する方法を学びます。

LuckyTemplates のマルチスレッド動的ビジュアル手法を使用したインサイトのショーケース

LuckyTemplates のマルチスレッド動的ビジュアル手法を使用したインサイトのショーケース

このチュートリアルでは、マルチスレッド動的ビジュアル手法を使用して、レポート内の動的データ視覚化から洞察を作成する方法について説明します。

LuckyTemplates のフィルター コンテキストの概要

LuckyTemplates のフィルター コンテキストの概要

この記事では、フィルター コンテキストについて説明します。フィルター コンテキストは、LuckyTemplates ユーザーが最初に学習する必要がある主要なトピックの 1 つです。

LuckyTemplates Online Service でアプリを使用する際の最良のヒント

LuckyTemplates Online Service でアプリを使用する際の最良のヒント

LuckyTemplates Apps オンライン サービスが、さまざまなソースから生成されたさまざまなレポートや分析情報の管理にどのように役立つかを示したいと思います。

時間の経過に伴う利益率の変化を分析する – LuckyTemplates と DAX を使用した分析

時間の経過に伴う利益率の変化を分析する – LuckyTemplates と DAX を使用した分析

LuckyTemplates でのメジャー分岐や DAX 数式の結合などの手法を使用して、利益率の変化を計算する方法を学びます。

DAX Studio でのデータ キャッシュのマテリアライゼーションのアイデア

DAX Studio でのデータ キャッシュのマテリアライゼーションのアイデア

このチュートリアルでは、データ キャッシュの具体化のアイデアと、それが結果を提供する際の DAX のパフォーマンスにどのように影響するかについて説明します。

LuckyTemplates を使用したビジネス レポート

LuckyTemplates を使用したビジネス レポート

これまで Excel を使用している場合は、ビジネス レポートのニーズに合わせて LuckyTemplates の使用を開始するのに最適な時期です。

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて