前年同期数値の取得について

ホーム フォーラム Power BI Power BI Desktop 前年同期数値の取得について

このトピックには3件の返信が含まれ、2人の参加者がいます。2 週間前 Ume さんが最後の更新を行いました。

4件の投稿を表示中 - 1 - 4件目 (全4件中)
  • 投稿者
    投稿
  • #5999
    Helpful
    Up
    0
    Down
    Not Helpful

    小林 由和
    参加者

    前年同期の何等かの数値(例えば、売上)をPowerBIで取得する場合以下のようなメジャーを作るのはよくあることかと思います。

    前年同期売上 = CALCULATE(‘カレンダー'[日付],-1,YEAR)

    問題は、このメジャーの計算において、当年(前年をとるための基準の年)のデータが年末ではなく
    例えば6月までしかない状態で、上記のメジャーを動作させた場合、
    以下のような様態になることです。

    Calender
    Date
    ——
    2020/1/1

    2021/6/30

    Fact data MonthlySales
    year-month Sales
    (type date)
    ——————-
    2020-01 1
    2020-02 2
    2020-03 3
    2020-04 4
    2020-05 5
    2020-06 6
    2020-07 7
    2020-08 8
    2020-09 9
    2020-10 10
    2020-11 11
    2020-12 12
    2021-01 13
    2021-02 14
    2021-03 15

    ‘MonthlySales'[year-month] はリレーションシップを’Calender'[Date]との間に持っています。

    また、前年同期のSalesを取得する以下のメジャーも定義してあります。
    Mesure LastYearSales = CALCULATE(SUM(‘MonthlySales'[Sales]),DATEADD(‘Calender'[Date],-1,YEAR))

    これを、2021年を基準年(選択年)として一覧表を表示すると
    以下のように表示されます。
    Table Visual

    ‘Calender'[Date] ‘Monthly'[Sales] LastYearSales
    ————————————————-
    2021/1/1 13 1
    2021/2/1 14 2
    2021/3/1 15 3
    2021/4/1 4
    2021/5/1 5
    2021/6/1 6
    ————————————————-
    TOTAL 42 21

    どうも、PowerBIは
    Step1:カレンダーマスター(Calender)の日付を1年マイナスした日付列のようなものを生成
    Step2:上記で作った1年前の日付にあった、MonthlySalesのSales項目を取得して並べる
    という動作をしているように見えます。

    前年同期という言葉の定義にもよりますが、
    私の顧客の解釈では、
    上記の状態であれば、2021/4から2021/6までは、当年の実績がないのだから
    前年同期数値(上記の例では4,5,6)は取得できるのはおかしい。
    というもので、これは、私も同意見です。
    現在、上記の2021/4から2021/6までを表示させないメジャーを作る方法を探していますが
    インターネットで探しても解決策が見つからず、カレンダーマスターを
    Factデータ(MonthlySales)の最終日、この場合では20201/3/1となるように
    カレンダーマスター(Calender)を調整することで何とかしのいでいます。
    何か解決策はあるのでしょうか?

    #6000
    Helpful
    Up
    0
    Down
    Not Helpful

    Ume
    参加者

    小林さん
    私も最初同様に考えましたが、今はDAXの正しい挙動として納得しています。

    今回の場合ですが。
    私なら日付マスタに同期の対象とすべき
    ファクトの最終日付の計算列を追加し
    Calculateで条件付けします。

    今回の例でいえば
    DateWithSales = ‘Calendar'[Date]<= MAX(‘MonthlySales'[SalesDate])
    でDateWithSales=trueとする感じでしょうか。
    参考になれば幸いです。

    #6001
    Helpful
    Up
    0
    Down
    Not Helpful

    小林 由和
    参加者

    Umeさん

    先回に続きアドバイスありがとうございます。
    使う人が、そういうものか、と納得してくれると早いのですけど。

    #6002
    Helpful
    Up
    0
    Down
    Not Helpful

    Ume
    参加者

    小林さん

    勘違いさせてしまったようですいません。
    DAXの正しい挙動と書きましたが、それしかできないという意味ではなくて
    「私なら・・・」以下の処理で当年の実績がない範囲を対象にしないことができるということです。

    DAXで様々条件付けをすることで、年度末までを分母として進捗を計算する(仕様)
    最終売上日までを分母とする、あるいは最終仕入日までを分母とする
    当月末までを分母とする等、要件に応じて柔軟に対応できるところがDAXの利点と思っています。

4件の投稿を表示中 - 1 - 4件目 (全4件中)

このトピックに返信するにはログインが必要です。

ツールバーへスキップ