Help us understand the problem. What is going on with this article?

DAX Query を記述して メジャーを試す

More than 1 year has passed since last update.

DAX Query で Power BI や SSAS(SQL Server Analysis Service)、PowerPivot for Excel など xVelocity メモリ内分析エンジン(xVelocity in-memory analytics engine) を使用するデータベースからデータ検索することができる。Power BI Desktop でのモデリング(メジャーやテーブルの追加など)の作業をするとき、DAX Studio で試行錯誤しながら作業することもできるし、DAX を学習することにとても役立つ。

構文など基本的なこと

構文はとてもシンプル、DEFINE / EVALUATE のふたつだけ。あとは DAX 関数を理解するだけ。
DEFINE で メジャーを定義して、EVALUATE で 評価する 簡単なおシゴト

EVALUATE

構文:EVALUATE
EVALUATE
    <table>  // テーブル名 もしくは テーブル式

[ORDER BY
    <expression> [{ ASC | DESC }]}[, …] ] // 列 もしくは 式 

EVALUATE で得られる結果は テーブル のみなので、テーブル名 もしくは テーブルを返す式を記述

テーブルを指定

例1
EVALUATE
    '商品'
例1:SQLで表現すると
SELECT * FROM '商品'

得られる結果にソートを指定する場合 ORDER BY で指定

例2
EVALUATE
    '商品'
ORDER BY
    '商品'[区分ID] ASC    
例2:SQLで表現
SELECT * FROM '商品' ORDER BY '商品'[区分ID] ASC

テーブル式

テーブルを返す式を記述する。結果にテーブルを返す関数
SELECTCOLUMNS
ADDCOLUMS
SUMMARIZE
SUMMARIZECOLUMNS
FILTER
VALUES
で、ひとまずこと足りるかと。よくつかう関数なのでおのずと覚えてしまいますけど。

列の選択

例3:列の選択
EVALUATE
    SELECTCOLUMNS(
        '商品'
      , "商品ID", '商品'[商品ID]
      , "商品名", '商品'[商品名]
    )
例3:SQLで表現
SELECT
    '商品'[商品ID] as "商品ID"
  , '商品'[商品名] as "商品名" 
FROM
    '商品'

列の追加

例4:列の追加
EVALUATE
    ADDCOLUMNS(
        '商品'
      , "区分ID-区分名", '商品'[区分ID] & "-" & '商品'[区分名]
    )
例4:SQLで表現
SELECT
    *
  , '商品'[区分ID] & "-" & '商品'[区分名] as "区分ID-区分名" 
FROM
    '商品'

集計

例5:集計
EVALUATE
    SUMMARIZE(
        '商品', '商品'[区分ID]
      , "Count of 商品", COUNTROWS( '商品' )        
    )
例5:SQLで表現
SELECT
    '商品'[区分ID]
   , COUNT(*) as "Count of 商品"
FROM
    '商品'
GROUP BY
    '商品'[区分ID]

条件

例6:条件
EVALUATE
    FILTER(
        '商品',
        '商品'[区分ID] = 1
    )
例6:SQLで表現
SELECT
    *
FROM
    '商品'
WHERE
    '商品'[区分ID] = 1

DEFINE

セッション内で利用できる メジャー(measure) と変数(named variable)は DEFINE 句 で定義

MEASURE

構文:MEASURE
MEASURE
    <tableName>[measureName] = <expression>

VAR

構文:VAR
VAR <varName> = <expression>

いくつかの例

日付テーブル

EVALUATE
    ADDCOLUMNS(
        CALENDARAUTO()
      , "年", YEAR( [Date] )
      , "年月", FORMAT( [Date], "yyyy年mm月" )
      , "月", YEAR( [Date] )
      , "年度"
      , SWITCH( 
            TRUE()
          , MONTH( [Date] ) < 4, YEAR( [Date] ) -1
          , YEAR( [Date] ) 
        )
    ) 

メジャーの定義と結果

DEFINE
    MEASURE
    '受注'[受注額] = SUMX( '受注', [数量] * RELATED( '商品'[単価] ) )

    MEASURE
    '受注'[受注額 LY] = CALCULATE( [受注額], SAMEPERIODLASTYEAR( 'カレンダー'[Date] ) )

    MEASURE
    '受注'[受注額 vs LY] = DIVIDE( [受注額], [受注額 LY] )

EVALUATE
    SUMMARIZECOLUMNS(
        'カレンダー'[年月]
      , "受注額", [受注額]
      , "受注額 LY", [受注額 LY]
      , "受注額 vs LY", [受注額 vs LY]
    )

EXCEL ワークシートに出力とかでもできるので DAX Studio 使うとよいですよ。
image.png

その他

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした