Excel ピボット Power Pivot DAX関数 質問スレ
!extend:checked:vvvvv:1000:512
↑次スレ建て用に同じ内容を2行貼り付けてね
ExcelのピボットやPower Pivot、これに関連したDAX関数などについて質問するスレ
コード書き込みや作成依頼もOK
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured >>2 の本は、商品売上データを元に
・四半期集計
・商品ごとの利益率
・前年度比較
・予実算比較
なんかをDAX関数使ってやってる。
自分の手持ちのデータで、これを応用して、
「ある地域のある商品について、過去の日最大売上」
を出そうとやってみたんだが、
うまく行かない。
本では商品、支店、カレンダーを切り出してリレーション組ませてるけど、
これをやらないと出来ないのかしら?
と悶絶中。 DAX関数、PowerPivotが、イマイチよくわからない。
1. 日ごとのデータの、複数の元データで
エリア、年月を共通キーにしてリレーションシップ張ってピボットで集計するとき、
エリア、年月で特定したつもりが、それ以外の合計を「(空白)」として集計してしまうことがある。
リレーション張るのが足らないようだが、よく分かっていない・・・
2. 年度ごとの月推移グラフを作るとき、
年度途中の集計でも、エリアごとに月遅れがある場合でも
12ヶ月分固定スロットの積み上げ棒グラフを作ろうとした。
X軸用に、まだ元データにはない将来の年月も含めた年度ごとの暦年月リストをクエリーで作って
これをフィルターの選択肢元にしたくて、
ピボットテーブルのあるシートのイベントでこのクエリーの更新と
ピボットテーブルのデータ元の更新かけたら
マクロがループに陥ってもうた。
・・・等々。
結局我流で、ピボットテーブルのフィルターだけ使って、
その選択値を名前定義でクエリーに取り込んで、
ピボットテーブルのシートのイベントでクエリーをマクロ更新させて
グラフ用データにしてはいるが、
こんな細かいこと、DAX関数やピボットテーブルで解説している
本とかWebサイトはないものか? いまいちフィルターコンテキストがよくわかんね
ちょっとDAX変えてみたら数値違っててふぁ!?ってなる Copilotからやっと教わったExcel版PowerPivot用DAX関数の備忘録
以下の3つのクエリー
Q_カレンダー:[年]、[年月]、[年月日時間帯]・・・
Q_地点:[地点No]、[地点名]
Q_Data:[年月日時間帯]、[年月]、[地点名]、[値]・・・
がデータ モデルに接続されていて、
Q_Data[年月] → Q_カレンダー[年月]
Q_Data[地点名] → Q_地点[地点名]
でそれぞれリレーションし、スライサーで[地点名]、[年月]を選択できるピボットテーブルがある。
このピボットテーブルに
「それそれの地点ごとの、全期間での[値]の最大値」
([年月]を変えても月次グラフの縦軸[値]スケールを地点ごとにほぼ一定にしたいため)
を列に追加したい場合のDAX関数は、
全期間最大値:=
CALCULATE(
MAXX(
FILTER(Q_Data, Q_Data[地点] = VALUES(Q_地点[地点])),
Q_Data[値]
),
ALL(Q_カレンダー)
)
MAXXとVALUESを使うのと、この構文がミソなのかと。
他にも
VAR SelectedLocation = VALUES(Q_地点[地点])
RETURN
・・・
として一時的に[地点名]を保持する方法も提示されたが、
SelectedLocation にエラーが出て、これはまだInsider版やPower BIでしか使えない? またCopilotから教わった。
>>11 はフィルターが2だったけど、
全地点を1つのBookに入れると、Web読み込みもあってさすがに重いので、
1Boookは1地点にした。
ということで、地点指定は不要に。
結果、別テーブルの、リレーションが張ってあるQ_カレンダー[年月]の
フィルター1つだけで指定されている中で、
Q_Data[値]の全期間の最大値を求めるDAX式は、
全期間最大:=
CALCULATE(MAXX(ALL(Q_Data), Q_Data[正側計]))
Q_カレンダー[年月]についての記述は不要で、
ALL(Q_Data)だけで行けるとのこと。
フィルターが2つだった >>11 のDAX関数とも、だいぶ作りが違う。