Python における Self とは: 実際の例
Python における Self とは: 実際の例
このチュートリアルでは、 LuckyTemplates データ レポートでの特定の日付の選択またはフィルター処理について説明します。このチュートリアルで使用される資料は、からのものです。問題を解決する方法を学び、使用される手法を理解します。このチュートリアルの完全なビデオは、このブログの下部でご覧いただけます。
目次
LuckyTemplates のデータ レポートについて理解する
これは、使用されるサンプル データ レポートです。これは、1 つのテーブル ビジュアルと 2 つのスライサーで構成されます。
目的は、スライサーの日付列で日付を選択できるようにすることです。つまり、スライサーで日付を選択すると、テーブルの視覚化には 7 日間隔で過去の日が表示されます。この例では、日付スライサーで選択されたデータは 2007 年 5 月 12 日です。
表には、日付間に 7 日の差がある前の日付が表示されます。
また、選択に基づいて日付の数を動的に表示するには、what if パラメーターを作成する必要があります。3を選択した場合、テーブル ビジュアルには 3 つの日付のみが表示されます。
テーブルとビジュアライゼーションの再作成
最初のステップは、what if パラメータを作成することです。LuckyTemplates デスクトップ内で、[モデリング] タブに移動し、[新しいパラメーター]を選択します。
パラメータに名前を追加し、データ型をWhole Numberに設定します。次に、以下の図に示すように、最小値、最大値、増分値、およびデフォルト値を設定します。ボックスをチェックしてスライサーをページに追加します。
OKを押すとスライサーが生成されます。ドロップダウン ボタンをクリックし、[リスト] を選択して、スライサーをリストに変換します。
次に、切断された日付テーブルとして使用される複製された日付テーブルを作成します。パワー クエリ エディターに移動し、Dates を複製します。
次に、複製したDisDate の名前を変更し、「閉じて適用」をクリックします。
LuckyTemplates への日付テーブルとスライサーの読み込み
複製されたテーブルが LuckyTemplates モデルに読み込まれたら、切断された日付テーブルの日付列を含むスライサーを作成します。DisDate テーブルを開き、Date をキャンバスにドラッグします。
次に、ビジュアライゼーションをスライサーに変更します。
その後、スライサーの形式をListに変更します。視覚化は次のようになります。
次に、スライサーを複製し、データ フィールドを Dates テーブルの Date 列に変更します。
日付スライサーから日付を選択すると、マトリックス内で Sales テーブルに表示される行の数が制限されます。2005 年 3 月 14 日を選択すると、マトリックスにはその日付のみが表示されます。
この設定を使用すると、結果と測定は機能しません。その理由は、対策が機能し始める前であっても、マトリックスへのアクセスがすでにフィルタリングされているためです。これらのフィルターされた値については、間隔を指定して日付を生成することはできません。
選択スライサーのメジャーの作成
選択範囲がスライサー上に配置されたときに、マトリックスを直接フィルター処理しない日付の設定を作成する必要があります。行列のフィルター処理は、スライサーから直接ではなく、DAX コードを通じて行う必要があります。したがって、DisDate スライサーから日付を選択しても、マトリックスには変更は発生しません。
これは、DisDate テーブルが Dates テーブルとの関係がないために発生します。このため、切断されたテーブルが不可欠です。
Dates テーブルのスライサーを削除し、最初のメジャーを作成します。メジャーは、「表示する日付」スライサーから選択された値を取得します。作成する必要がある最初の変数はValuesToShowです。次に、それを「表示する日付」の値と一致させ、RETURN を入力して、選択された値を返します。
そのメジャーをマトリックスにドラッグします。[表示する日付] スライサーから 6 を選択すると、マトリックスの [メジャー] 列も 6 になります。
次に、スライサーで選択された切断された日付を取得する別の変数を作成します。
完了すると、DisDate スライサーで選択された値が [測定] 列に表示されます。
計算テーブルの作成
スライサーで選択した日付から始まる 7 日間隔の日付のリストを作成します。次に、[表示する日付] スライサーの選択に基づいてマトリックスが日数を生成することを確認します。これを行うには、まず計算テーブルを作成する必要があります。
計算された表は、DAX コード内で日付がどのように生成されるかを視覚化するのに役立ちます。データ ビューに移動し、[新しいテーブル] をクリックします。
変数SelectedDate を入力し、それをDATE関数と同等にします。次に、括弧内に日付を入力します。次に、行列に表示する日付の数を指定する別の変数を作成します。DatesToShowを入力し、日付の数と等しくします。
その後、7 日間隔の日付のリストを生成する別の変数を作成します。DatesListを入力し、GENERATESERIES関数を使用します。 、いくつかの引数を渡すことによって数値のリストを生成する関数です。
最初の引数に、開始値としてSelectedDate – (DatesToShow * 7) を入力します。次に、終了値としてSelectedDateを入力します。最後の引数には、増分値または日付間の間隔として7を入力します。完了したら、関数を閉じてRETURNとDateListを入力します。
次に、5 月 5 日から始まり 7 ずつ遡って 7 つの値を含むテーブルが表示されます。
ここで、必要以上に多くの日付が作成されたことがわかります。元のサンプル レポートでは、同じ [表示する日付] と [日付] の選択で表示される最後の日付は 3 月 31 日でした。
これを修正するには、DatesToShow 変数の値を 5 に変更するか、6 から 1 を減算します。この例では、6 から 1 が減算されます。
その後、値が 3 月 31 日に終了することがわかります。
フィルターコンテキストへの日付の挿入
次に、これらの日付を使用して日付フィルター コンテキストに挿入する必要があります。フィルター コンテキストで売上金額を計算する必要もあります。したがって、GENERATESERIES構文をコピーし、メジャーに戻ります。
メジャーに新しい変数を追加し、DatesToShowと入力します。次に、その変数をGENERATESERIES構文と同等とみなします。構文内の変数をSelectedDateからDisSelectedDateに、DatesToShowからValuesToShowに変更します。
最後に、結果の変数を作成します。これをTotal Sales および DatesToShow に対してCALCULATE関数と同等にして、 GENERATESERIES構文から受け取ったすべての日付をフィルター コンテキストに挿入します。完了したら、RETURN関数にResultを入力します。
これで、DAX コードが要求している日付がマトリックスに表示されないことがわかります。マトリックスに Total Sales メジャーを取り込むと、コードが Sales 金額自体を返していることがわかります。
このメジャーの問題は、 GENERATESERIES構文で作成された日付に、切断された日付テーブルとのデータ系列があることです。これは、Date テーブルが Sales テーブルに接続されていないことを意味します。そのため、日付のリストがフィルター コンテキストに適用されたときに、Sales テーブルが含まれませんでした。
関数を使用して仮想関係を作成し、フィルター コンテキストを適用する必要があります。
TREATAS を使用して LuckyTemplates マトリックスの日付を修正する
GENERATESERIES構文から受け取った値を、元の Date テーブルの一部であるかのように扱う必要があります。これは基本的に、データ モデル内の Date テーブルの Date 列を使用してリネージを構築します。
したがって、Result 変数で、Total Sales テーブルの後にTREATASと入力し、引数を指定します。最初の引数には、リレーションシップのない列またはテーブルを指定します。この場合、DatesToShow列が使用されます。
2 番目の引数には、最初の引数の列の系統をマップする列を指定します。この例では、Dates テーブルの Date 列が使用されます。
ただし、コードを修正しても、スライサーを使用すると、マトリックスの [測定] 列に正しい値が表示されません。列内の値が繰り返していることもわかります。
問題はコードの記述方法にあります。TREATAS はすべての値をフィルター コンテキストに適用し、選択された日付の既存のフィルター コンテキストをGENERATESERIES関数から取得したすべての値でオーバーライドします。
TREATAS での KEEPFILTERS 関数の使用
既存のフィルター コンテキストをオーバーライドせずにフィルターがフィルターに挿入されるようにするには、KEEPFILTERS関数を使用する必要があります。 CALCULATEのフィルタリング セマンティクスを変更します。
TREATAS関数の前にKEEPFILTERS を入力し、対策を確認します。
「メジャー」列内の値が繰り返されていないことがわかります。
5 月と 4 月の月を展開すると、[メジャー] 列の値が [総売上] 列の値と等しいことがわかります。
マトリックス内の Total Sales メジャーを削除し、表示する日付スライサーで数値を選択します。すると、同じ数の日付がマトリックスに表示されることがわかります。
LuckyTemplates マトリックスで日付が欠落している問題を修正する
このレポートのもう 1 つの問題は、 DatesToShowスライサーで 8 を選択しても行列が変化しないことです。
スライサーで 9 を選択すると、マトリックスには 8 つの日付のみが表示されます。また、日付のリストに 3 月 17 日が含まれていないことにも気づきます。
その理由は、Date テーブルの日によっては、Sales テーブルに一致するトランザクションが存在しないためです。したがって、メジャーはそれらの日付に対して空白を返します。空白が返されるため、行列の背後で実行されるコードは結果から空白行を削除します。
LuckyTemplates は、返された結果を使用して行列にデータを入力します。したがって、一部の日は空白で返されるため、マトリックスでその日の売上とエントリを確認できません。
データに売上がない日について何かを表示したい場合は、メジャーに戻ってCALCULATE構文を削除します。
DAX を使用して LuckyTemplates で欠落している日付を解決する
DatesテーブルのDatesToShow列とDate列にTREATASを書き込むことにより、データ リネージュを作成します。次に、 TREATAS関数によって返されたすべての日付がフィルター コンテキストに含まれているかどうかを確認します。
そこから、複数の変数によって実行を分割します。変数名をResultからCreateDataLineageに変更して、 TREATASの結果が格納されていることを示します。
次に、マトリックスからのフィルター コンテキストに表示されるすべての日付を保持する別の変数を作成します。変数名としてVisibleDateを入力し、 Date列に を使用します。
次に行うことは、 TREATAS関数の結果に売上金額を含む列を作成することです。変数名としてDatesWithSales を書き込み、 CreateDataLineage変数に対して 使用します。
関数内で新しい列を作成し、行コンテキストの Total Sales メジャーを使用してSales Amountという名前を付け、コンテキストの遷移を開始します。
その後、DatesWithSales変数に格納されているすべての日付がフィルター コンテキストに含まれているかどうかを確認する変数を作成します。変数名としてIsDateInFilterContextを入力し、 関数を使用します。
そこから、関数の最初の引数としてDatesWithSalesを記述します。次に、第 2 引数としてDates[Date] IN VisibleDateを入力し、 DatesWithSalesテーブルに含まれる日付がVisibleDate変数に含まれているかどうかを確認します。
作成する必要がある最後の変数はResultです。IsDateInFilterContext変数に対して 関数を使用します。以前は含まれていなかった日数を含めるには、[@Sales Amount] + 0と書き込みます。
すべてを終えると、マトリックス内に欠落していた日付 3 月 17 日が表示されます。
元の小節で +0 を使用する
前の手順では、ファクト テーブルにトランザクションがないすべての日付を含めるメジャーを構築する方法を示しました。ここで、作成した元のメジャーで+ 0を使用すると、メジャー列の値はすべて 0 になります。
その理由は、Result変数に空白または Sales 金額が含まれているためです。したがって、0 を追加すると、空白が 0 に置き換えられます。集計列によってデータセットから空白行が削除されることに注意してください。これらを LuckyTemplates に返すと、空白ではなく限られた行のみが表示されるようになります。
ただし、0 が追加されるため、集計列は強制的に行を保持します。次に、Dates テーブルに存在するすべての日付を含むテーブルが返され、該当する場合、または空白の場合は 0 が表示されます。
これが、フィルター コンテキストに表示され、 DatesToShow変数に含まれる日付に 0 を追加するだけで済むようにメジャーを書き直す必要がある理由です。
Power Automate コネクタ: 数値、テキスト、日付時刻
拡張日付テーブル Power Query M 関数
Power Query LuckyTemplates | Power Automate コネクタ 日付フィールドに基づいて新しいレコードを作成する
結論
LuckyTemplates マトリックスで特定の日付を選択できるデータ レポートを作成するには、計算テーブルとDAX 関数を使用する必要があります。DAX の関数とメジャーは、結果を簡単に取得できる方法で記述する必要があります。
Python における Self とは: 実際の例
R の .rds ファイルからオブジェクトを保存および読み込む方法を学習します。このブログでは、R から LuckyTemplates にオブジェクトをインポートする方法についても説明します。
この DAX コーディング言語チュートリアルでは、GENERATE 関数の使用方法とメジャー タイトルを動的に変更する方法を学びます。
このチュートリアルでは、マルチスレッド動的ビジュアル手法を使用して、レポート内の動的データ視覚化から洞察を作成する方法について説明します。
この記事では、フィルター コンテキストについて説明します。フィルター コンテキストは、LuckyTemplates ユーザーが最初に学習する必要がある主要なトピックの 1 つです。
LuckyTemplates Apps オンライン サービスが、さまざまなソースから生成されたさまざまなレポートや分析情報の管理にどのように役立つかを示したいと思います。
LuckyTemplates でのメジャー分岐や DAX 数式の結合などの手法を使用して、利益率の変化を計算する方法を学びます。
このチュートリアルでは、データ キャッシュの具体化のアイデアと、それが結果を提供する際の DAX のパフォーマンスにどのように影響するかについて説明します。
これまで Excel を使用している場合は、ビジネス レポートのニーズに合わせて LuckyTemplates の使用を開始するのに最適な時期です。
LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて