ラボ - Power BI Desktop で DAX 計算を作成する (パート 2)

完了

環境にアクセスする

(前のラボから続行する場合を除き) このラボを開始する前に、上の [ラボの起動] を選択します。

data-ai\student としてラボ環境に自動的にログインします。

これで、このラボの作業を開始できます。

ヒント

ラボ環境をドッキングしてウィンドウいっぱいに表示されるようにするには、上部中央にある画びょうのアイコンを選択します。

画びょうのアイコンが強調表示されているラボのスクリーンショット。

このラボの推定所要時間: 45 分

このラボでは、フィルター コンテキストの操作を伴う DAX 式を使用してメジャーを作成します。

このラボでは、次の作業を行う方法について説明します。

  • CALCULATE() 関数を使用してフィルター コンテキストを操作する

  • タイム インテリジェンス関数を使用する

ラボのストーリー

このラボは、データの準備に始まり、レポートおよびダッシュボードとして発行するまでの完全なストーリーとして設計されたラボ シリーズの 1 つです。 ラボは任意の順序で完了できます。 しかしながら、複数のラボに取り組む場合は、最初の 10 のラボについては、次の順序で行うことをお勧めします。

  1. Power BI Desktop でデータを準備する

  2. Power BI Desktop でデータを読み込む

  3. Power BI Desktop でデータをモデル化する (パート 1)

  4. Power BI Desktop でデータをモデル化する (パート 2)

  5. Power BI Desktop で DAX 計算を作成する (パート 1)

  6. Power BI Desktop で DAX 計算を作成する (パート 2) << 現在はここです。 これは、現在のモジュールのラボです。

  7. Power BI Desktop でレポートをデザインする (パート 1)

  8. Power BI Desktop でレポートをデザインする (パート 2)

  9. Power BI ダッシュボードを作成する

  10. Power BI Desktop でデータ分析を実行する

  11. Power BI のページ分割されたレポートを作成する

注意

各ラボは、前のラボ作業がすべて完了した PBIX ファイルを使用して開始されます。 何らかの理由で作業が失われた場合は、次のラボの冒頭に示されているフォルダーから、その時点までの進行状況を含む PBIX ファイルを開くことができます。

演習 1:フィルター コンテキストを操作する

この演習では、フィルター コンテキストの操作を伴う DAX 式を使用してメジャーを作成します。

タスク 1: 開始する

このタスクでは、ラボの環境を設定します。

重要

前のラボから継続している (そのラボを正常に完了した) 場合は、このタスクは行わないでください。 代わりに、次のタスクから続行してください。

  1. Power BI Desktop を開くには、タスク バーにある Microsoft Power BI Desktop ショートカットを選択します。

  2. 開始ウィンドウを閉じるには、ウィンドウの左上にある [X] を選択します。

  3. スターター Power BI Desktop ファイルを開くには、[ファイル] リボン タブを選択して Backstage ビューを開きます。

  4. [レポートを開く] を選択します。

    [ファイル] メニューが展開され、[レポートを開く] オプションが強調表示されているスクリーンショット。

  5. [レポートを参照] を選択します。

  6. [開く] ウィンドウで、D:\DA100\Labs\create-dax-calculations-in-power-bi-desktop-advanced\Starter フォルダーに移動します。

  7. Sales Analysis ファイルを選択します。

  8. [Open] を選択します。

  9. 情報ウィンドウが開いている場合はすべて閉じます。

  10. ファイルのコピーを作成するには、[ファイル] リボン タブを選択して Backstage ビューを開きます。

  11. [名前を付けて保存] を選択します。

    [ファイル] メニューが展開され、[名前を付けて保存] オプションが強調表示されているスクリーンショット。

  12. 変更の適用を求めるメッセージが表示されたら、[適用] を選択します。

  13. [名前を付けて保存] ウィンドウで、D:\DA100\MySolution フォルダーに移動します。

  14. [保存] を選択します。

タスク 2: 行列の視覚エフェクトを作成する

このタスクでは、新しいメジャーのテストをサポートするための行列の視覚エフェクトを作成します。

  1. Power BI Desktop のレポート ビューで、新しいレポート ページを作成します。

    新しいレポート ページの作成機能アイコンのスクリーンショット。

  2. [ページ 3] で、行列の視覚エフェクトを追加します。

    [視覚化] タブにある行列の視覚化のスクリーンショット。

  3. ページ全体に合わせて行列の視覚エフェクトのサイズを変更します。

  4. 行列の視覚エフェクトのフィールドを構成するには、[フィールド] ペインから Region | Regions 階層をドラッグして、視覚エフェクト内にドロップします。

    このラボでは、フィールドまたは階層を参照するために簡略表記を使用します。 Region | Regions のようになります。 この例では、Region はテーブル名、Regions は階層名です。

  5. Sales | Sales フィールドも追加します。

  6. 階層全体を展開するには、行列の視覚エフェクトの右上にある 2 つに分かれた矢印アイコンを 2 回選択します。

    2 つに分かれた矢印アイコンのスクリーンショット。

    Regions 階層には、GroupCountry、および Region のレベルがあることを思い出してください。

  7. 視覚エフェクトを書式設定するには、[視覚化] ペインの下にある [書式] ペインを選択します。

    [視覚化] ペインの下にある [書式] ペイン ボタンのスクリーンショット。

  8. [検索] ボックスに「階段状」と入力します。

    [書式] ペインの [検索] ボックスのスクリーンショット。

  9. [階段状レイアウト] プロパティを [オフ] に設定します。

    [オフ] に設定された [階段状レイアウト] のスクリーンショット。

  10. 行列の視覚エフェクトに 4 つの列ヘッダーがあることを確認します。

    4 つの列ヘッダーがある行列のスクリーンショット。

    Adventure Works では、販売地域はグループ、国、地域に分類されます。 米国を除くすべての国には地域が 1 つだけあり、その国にちなんだ名前が付けられています。 米国はとても大きな販売区域であるため、5 つの地域に分割されます。

    この演習ではいくつかのメジャーを作成し、行列の視覚エフェクトに追加してテストします。

タスク 3: フィルター コンテキストを操作する

このタスクでは、CALCULATE() 関数を使用してフィルター コンテキストを操作する DAX 式を使用して、いくつかのメジャーを作成します。

  1. レポート ビューで、[モデリング] リボンの [計算] グループ内から [新しいメジャー] を選択して、Sales テーブルにメジャー "Sales All Region" を追加します。

  2. 次の式を使用してメジャーを作成します。

    利便性のために、このラボ内のすべての DAX 定義は D:\DA100\Labs\create-dax-calculations-in-power-bi-desktop-advanced\Assets\Snippets.txt ファイルからコピーできます。

    Sales All Region =
    CALCULATE(SUM(Sales[Sales]), REMOVEFILTERS(Region))
    

    CALCULATE() 関数は、フィルター コンテキストを操作するために使用される強力な関数です。 最初の引数では、式またはメジャーを受け取ります (メジャーは単に名前付きの式です)。 その後の引数によって、フィルター コンテキストを変更できます。

    REMOVEFILTERS() 関数では、アクティブなフィルターが削除されます。 引数を指定しないことも、テーブル、列、または複数の列を引数に指定することもできます。

    この数式では、メジャーによって、変更されたフィルター コンテキストで Sales 列の合計が評価されます。Region テーブルに適用されているすべてのフィルターが削除されます。

  3. Snippets.txt ファイルから式をコピーして数式バーに貼り付けて、Enter キーを押します。 これにより、Sales テーブルにメジャーが作成されます。 Sales テーブルの下の [フィルター] ペインでフィールドの一覧を確認すると、Sales All Region メジャーが表示されています。

  4. [フィールド] ペインで Sales All Region メジャーをオンにして、行列の視覚エフェクトにメジャーを追加します。

    すべての地域のメジャーが追加された売上のスクリーンショット。

  5. Sales All Region メジャーによって、各地域、国 (小計)、およびグループ (小計) のすべての地域売上の合計が計算されていることがわかります。

    このメジャーでは、まだ有用な結果が提供されていません。 グループ、国、または地域の売上をこの値で割ると、"総計のパーセント" と呼ばれる便利な比率が生成されます。

  6. [フィールド] ペインで Sales All Region メジャーが選択されている (選択すると、背景が濃い灰色になります) ことを確認した後、数式バーで、メジャーの名前と数式を次の数式に置き換えます。

    ヒント

    既存の数式を置き換えるには、まずスニペットをコピーします。 続いて、数式バー内をクリックし、Ctrl + A キーを押してすべてのテキストを選択します。 次に、Ctrl + V キーを押してスニペットを貼り付けて、選択したテキストを上書きします。 Enter キーを押します。

    Sales % All Region =
    DIVIDE(
       SUM(Sales[Sales]),
       CALCULATE(
            SUM(Sales[Sales]),
            REMOVEFILTERS(Region)
       )
    )
    

    更新された数式の内容を正確に反映するように、メジャーの名前が変更されました。 DIVIDE() 関数によって、(フィルター コンテキストによって変更されない) Sales メジャーが、Region テーブルに適用されているすべてのフィルターが削除される変更されたコンテキストの Sales メジャーによって除算されます。

  7. 行列の視覚エフェクトで、メジャーの名前が変更され、グループ、国、および地域ごとに異なる値が表示されるようになったことがわかります。

  8. Sales % All Region メジャーを、小数点以下 2 桁のパーセンテージとして書式設定します。

    小数点以下 2 桁のパーセンテージに設定されたメジャーのスクリーンショット。

  9. 行列の視覚エフェクトで、Sales % All Region メジャーの値を確認します。

    Sales % All Region の値のスクリーンショット。

  10. 次の式に基づいて、Sales テーブルにもう 1 つのメジャーを追加し、パーセンテージとして書式設定します。

    Sales % Country =
    DIVIDE(
       SUM(Sales[Sales]),
       CALCULATE(
           SUM(Sales[Sales]),
           REMOVEFILTERS(Region[Region])
       )
    )
    
  11. Sales % Country の数式は、Sales % All Region の数式とは若干異なることにお気付きでしょうか。

    異なるのは、分母でのフィルター コンテキストの変更が、Region テーブルのすべての列ではなく、Region テーブルの Region 列に対するフィルターを削除することで行われている点です。 これは、グループまたは国の列に適用されているすべてのフィルターが保持されることを意味します。 これにより、国の割合として売上を表す結果が得られます。

  12. 行列の視覚エフェクトに Sales % Country メジャーを追加します。

  13. 米国の地域のみが 100% ではない値を生成することがわかります。

    値が 100% ではない米国の地域のスクリーンショット。

    米国にだけ複数の地域があることを思い出してください。 他のすべての国には 1 つしか地域がないため、すべて 100% になります。

  14. 視覚エフェクトでのこのメジャーの読みやすさを向上させるために、Sales % Country メジャーを次の改良された数式で上書きします。

    Sales % Country =
    IF(
        ISINSCOPE(Region[Region]),
        DIVIDE(
            SUM(Sales[Sales]),
            CALCULATE(
                SUM(Sales[Sales]),
                REMOVEFILTERS(Region[Region]
            )
        )
    )
    

    IF() 関数内に埋め込まれた ISINSCOPE() 関数は、地域の列がレベル階層のレベルであるかどうかをテストするために使用されます。 true の場合、DIVIDE() 関数が評価されます。 false の部分がないため、地域の列がスコープ内にない場合は空白が返されます。

  15. Sales % Country メジャーによって、地域がスコープ内にある場合にのみ値が返されるようになったことがわかります。

    地域がスコープ内にある場合にのみ返されるメジャー値のスクリーンショット。

  16. 次の式に基づいて、Sales テーブルにもう 1 つのメジャーを追加し、パーセンテージとして書式設定します。

    Sales % Group =
    DIVIDE(
        SUM(Sales[Sales]),
        CALCULATE(
             SUM(Sales[Sales]),
             REMOVEFILTERS(
                 Region[Region],
                 Region[Country]
             )
        )
    )
    

    グループの割合としての売上を得るために、2 つのフィルターを適用して、2 つの列に対するフィルターを効果的に削除できます。

  17. 行列の視覚エフェクトに Sales % Group メジャーを追加します。

  18. 視覚エフェクトでのこのメジャーの読みやすさを向上させるために、Sales % Group メジャーを次の改良された数式で上書きします。

    Sales % Group =
    IF(
        ISINSCOPE(Region[Region])
             || ISINSCOPE(Region[Country]),
        DIVIDE(
            SUM(Sales[Sales]),
            CALCULATE(
                SUM(Sales[Sales]),
                REMOVEFILTERS(
                     Region[Region],
                     Region[Country]
                )
            )
        )
    )
    
  19. Sales % Group メジャーによって、地域または国がスコープ内にある場合にのみ値が返されるようになったことがわかります。

  20. モデル ビューで、3 つの新しいメジャーを Ratios という名前の表示フォルダーに配置します。

    Ratios フォルダー内にある 3 つの新しいメジャーのスクリーンショット。

  21. Power BI Desktop ファイルを保存します。

    Sales テーブルに追加されたメジャーによって、階層ナビゲーションを実現するためにフィルター コンテキストが変更されました。 小計の計算を実現するためのパターンでは、フィルター コンテキストから一部の列を削除する必要があり、総計を得るためにはすべての列を削除する必要があることにお気付きでしょうか。

演習 2:タイム インテリジェンスを使用する

この演習では、売上の年度累計 (YTD) メジャーと売上の前年比 (YoY) 成長メジャーを作成します。

タスク 1:YTD メジャーを作成する

このタスクでは、売上の YTD メジャーを作成します。

  1. レポート ビューの [ページ 2] で、行列の視覚エフェクトにさまざまなメジャーが表示され、年と月が行でグループ化されていることに注目してください。

  2. 次の式に基づいて、Sales テーブルにメジャーを追加します。小数点以下 0 桁に書式設定します。

    Sales YTD =
    TOTALYTD(SUM(Sales[Sales]), 'Date'[Date], "6-30")
    

    TOTALYTD() 関数では、指定した日付列に対して式 (この場合は Sales 列の合計) が評価されます。 Power BI Desktop で DAX 計算を作成する (パート 1) のラボでそうだったように、日付列は、日付テーブルとしてマークされている日付テーブルに属している必要があります。

    この関数には、年度の最後の日付を表す、省略可能な 3 番目の引数を指定することもできます。 この日付を指定しない場合は、12 月 31 日が年度の最後の日付になります。 Adventure Works では、6 月が年度の最後の月なので、"6-30" が使用されます。

  3. Sales フィールドと Sales YTD メジャーを行列の視覚エフェクトに追加します。

  4. 年内の売上の値が累積されていることがわかります。

    売上の値の累計を示すスクリーンショット。

    TOTALYTD() 関数によって、フィルター操作 (具体的には、時間フィルター操作) が実行されます。 たとえば、2017 年 9 月 (会計年度の 3 番目の月) の YTD 売上を計算する場合は、Date テーブルのすべてのフィルターが削除され、年度の開始日 (2017 年 7 月 1 日) に始まりコンテキスト内の日付期間の最後の日付 (2017 年 9 月 30 日) まで続く日付の新しいフィルターに置き換えられます。

    注意

    一般的な時間フィルター操作をサポートするために、多くのタイム インテリジェンス関数を DAX で使用できます。

タスク 2:YoY 成長メジャーを作成する

このタスクでは、売上の YoY メジャーを作成します。

  1. 次の式に基づいて、Sales テーブルに新しいメジャーを追加します。

    Sales YoY Growth =
    VAR SalesPriorYear =
        CALCULATE(
            SUM(Sales[Sales]),
            PARALLELPERIOD(
                'Date'[Date],
                -12,
                MONTH
               )
        )
    RETURN
        SalesPriorYear
    

    Sales YoY Growth メジャーの数式では、変数が宣言されます。 変数を使用すると、数式のロジックを簡略化できる場合があります。また、数式内で式を複数回評価する必要がある場合に効率性が向上します (YoY 成長のロジックではこれが該当します)。 変数は一意の名前で宣言されます。その後、メジャー式を RETURN キーワードの後の出力にする必要があります。

    SalesPriorYear 変数には、変更されたコンテキストで Sales 列の合計を計算する式が代入されます。そこでは、PARALLELPERIOD() 関数を使用して、フィルター コンテキストの各日付が 12 か月前にシフトされます。

  2. 行列の視覚エフェクトに Sales YoY Growth メジャーを追加します。

  3. 新しいメジャーでは、最初の 12 か月に対して空白が返されることがわかります (会計年度 2017 年よりも前に記録された売上はありませんでした)。

  4. 2018 年 7 月 に対する Sales YoY Growth メジャーの値は、2017 年 1 月Sales の値であることがわかります。

    2017 年 7 月の Sales YoY Growth と 2016 年 1 月 Sales が同じであることを示すスクリーンショット。

    これで数式の "難しい" 部分をテストできたので、成長の結果を計算する最終的な数式で、メジャーを上書きすることができます。

  5. メジャーを完成させるには、次の数式で Sales YoY Growth を上書きして、小数点以下 2 桁のパーセンテージとして書式設定します。

    Sales YoY Growth =
    VAR SalesPriorYear =
        CALCULATE(
              SUM(Sales[Sales]),
              PARALLELPERIOD(
              'Date'[Date],
              -12,
              MONTH
            )
    )
    RETURN
       DIVIDE(
           (SUM(Sales[Sales]) - SalesPriorYear),
           SalesPriorYear
       )
    
  6. この数式の RETURN 句では、変数が 2 回参照されていることがわかります。

  7. 2018 年 7 月 の YoY 成長が 392.83% であることを確認します。

    2018 年 7 月の YoY 成長のスクリーンショット。

    これは、2018 年 7 月の売上 ($2,411,559) が、前年に達成された売上 ($489,328) に対して約 400% (ほぼ 4 倍) の改善を表すことを意味します。

  8. モデル ビューで、2 つの新しいメジャーを Time Intelligence という名前の表示フォルダーに配置します。

    Time Intelligence フォルダー内の新しいメジャーのスクリーンショット。

タスク 3: 完了

このタスクでは、ラボを完了します。

  1. レポート開発の準備ができたソリューションをクリーンアップするには、左下にある [ページ 2] タブを右クリックして [ページの削除] を選択します。

    宛先として選択された Sales Analysis ワークスペースのスクリーンショット。

  2. ページを削除するよう求められたら、[削除] をクリックします。

  3. [ページ 3] も削除します。

  4. 残りのページでは、ページをクリアするために、テーブルの視覚エフェクトを選択してから Delete キーを押します。

  5. Power BI Desktop ファイルを保存します。

  6. 次のラボを開始する場合は、Power BI Desktop を開いたままにすることを選択できます。

    警告

    ラボを開いたままにしておくと、1 時間から 4 時間後にタイムアウトになります。 "現在" のモジュールのラボでの作業は失われますが、最初のラボの後の各ラボには、前のラボのすべての作業が完了した PBIX ファイルが含まれているので、最初からやり直す必要はありません。

    Power BI Desktop でレポートをデザインする (パート 1) のラボでは、データ モデルに基づいてレポートを作成します。

ラボを終了する

このラボを終了するには、この指示ウィンドウの右下隅にある [完了] ボタンを選択します。