DAX Studio利用ガイド

# DAX Studio利用ガイド



## 概要

本資料にて、DAX Studioの基本的な利用方法を記載します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/a446f7c7-ddb4-e785-b753-36af0cb1dbbf.png)
	

## DAX Studioとは

DAX Studioとは、Microsoft社製品(Power BI , Analysis Servicesなど)で実行される表形式モデルに対してDAXクエリを発行やモデル監視ができる3rd partyツールです。

SQL Server Data toolsやPower BI Desktopと比較すると、軽量な動作が特徴となっております。



## 接続可能なサービス

4種類のサービスに接続です。

- Power BI Desktop 
- Power B サービス（Power BI Premiumのみ）
- Azure Analysis Services、及び、SQL Server Analysis Services
- SQL Server Data Tools（統合ワークスペースモードのみ）

※PowerPivotに接続することも可能ですが、Excelのアドオンとして実行する必要があります。



## 環境構築

[サイト](https://daxstudio.org/downloads/)より、exeをダウンロードして、インストールを実施。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/fbdb3ab2-436d-61f5-3910-6bb5e385fab4.png)






## DAX Studioの機能

- 1. DAX Studioの基本

  - 画面の説明
  - モデルへの接続
  - レイアウトの配置

- 2. クエリの記載

  - クエリの記載方法の概要
  - 既存のメジャーの確認
  - TSVファイルでのアウトプット方法
  - クエリの実行モードを変更
  - パラメータを利用してクエリを実行する方法

- 3. サーバー監視

  - モデルの情報確認
  - DMVによるデータ確認
  - クエリのプランの確認
  - 　クエリ実行情報の確認
  
- 4. その他

  - Power BI パフォーマンスアナライザーの実行（json）の表示
  - 





### 1. DAX Studioの基本

#### 1-1. 画面の説明

下記の要素により構成されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/14c21feb-713f-4089-a5e4-afac9cf3aa27.png)


1. リボンコントロール／ファイルメニュー
2. メタデータペイン
3. クエリエディター
4. アウトプットペイン
5. ステータスバー

 



#### 1-2. モデルへの接続

下記のサービスへの接続方法を提示します。

1. Power BI Desktop への接続方法
2. Power B サービス（Power BI Premiumのみ）への接続方法
3. Azure Analysis Services、及び、SQL Server Analysis Servicesへの接続方法
4. SQL Server Data Toolsへの接続方法



##### 1. Power BI Desktop への接続方法

1-1. pbixファイルを、Power BI Desktopにて開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/71c75b40-a5ec-8d4d-7544-e4660fb9ba80.png)




1-2. DAX Studioを開き、"PBI/SSDT Model"にて開いたpbixファイル名を指定して、"Connect"を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/57d84f9d-369b-0875-4047-7887f24b736e.png)




1-3.  モデルに接続できることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/28896369-174d-760c-78a0-0b23433a27ca.png)




##### 2. Power BI サービス（Power BI Premiumのみ）への接続方法

2-1. Power BI サービスにおけるデータセットの設定を開き、"接続文字列"に記載のある項目をコピーする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/2aab3c81-a7a3-92e8-1b00-499b0b48f34c.png)




2-2. DAX Studioを開き、"Tabular Server"にて開いたコピーした値を指定して、"Connect"を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/ea56bca3-1369-30f3-68ca-5d20df7af922.png)




2-3. Power BI サービスのアカウントにてログインします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/006a8500-7c9c-9028-609e-b5dbd1064cc3.png)


2-4. モデルに接続できることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/13c7e46e-67e6-10f2-4745-dc1e7cca4141.png)


##### 3. Azure Analysis Services、及び、SQL Server Analysis Servicesへの接続方法 

3-1. Azure Analysis Services、及び、SQL Server Analysis Servicesの接続先名をコピーします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/ec3141f0-403e-2bdf-3001-46a3f2769a30.png)



3-2. DAX Studioを開き、"Tabular Server"にて開いたコピーした値を指定して、"Connect"を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/4781ad02-c654-777a-d9f9-3e99d2259e16.png)




3-3. Power BI サービスのアカウントにてログインします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/3e27edf8-9300-ff73-ee1a-dfa714c6b8d0.png)




3-4. モデルに接続できることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/d9725ff0-98e7-426b-0eee-058bfb58656f.png)






##### 4. SQL Server Data Tools（統合ワークスペースモード）への接続方法

4-1. モデルのソリューションファイルを、SQL Server Data toolsにて開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/79ab9e2f-42ed-0dc5-1ee6-8d4c3e0330bb.png)




4-2. DAX Studioを開き、"PBI/SSDT Model"にて開いたソリューション名を指定して、"Connect"を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/9b324bd5-8ee9-c4e2-dc7a-660b61427933.png)




4-3. モデルに接続できることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/037fe917-d943-0eda-630c-f044aebdef2e.png)




#### 1-3. レイアウトの配置

レイアウトを柔軟に変更することができます。

たとえば、操作画面の配置を柔軟に変更でき、DAX式を並べることも可能です。



1. タブを、中央に表示される十字ボタン群の右側にドラッグします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/59ab6c7e-1624-77e2-1196-89883ef6f4ef.png)




2. DAX式が並んで表示されていることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/92375836-aa4d-6acb-7e1a-0ff7c169f809.png)








### 2. クエリの記載

#### 2-1. クエリの記載方法の概要

1.  サービスの接続後、利用するモデルを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/61d3f6d6-c329-3492-5efc-9c0edc22affd.png)

※新規クエリを開く際に、最も一番上にあるモデルを選択する仕様であるため、クエリ実行前にモデルを確認する必要があります。



2.  関数の一部を入力することで、インテリセンス機能が有効となり、tabを選択することで選択可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/e7009ec4-eed7-f3b0-566a-b092d36bed72.png)




3. メタデータをドラッグアンドドロップすることで、スキーマ名やテーブル名を入力することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/c458f992-23a2-ffc8-334d-11159788b543.png)




4. 上部にある"Run"を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/7c2b6251-af5f-fe4c-bec5-8e485605c710.png)




#### 2-2. 既存のメジャーの確認

モデルに保存されているメジャーにおける下記情報を取得可能です。

| 項目名                              | 説明                                     |
| ----------------------------------- | ---------------------------------------- |
| Define Measure                      | 既存のメジャー定義情報を表示                     |
| Define Dependent Measures           | 依存するメジャーのメジャーを含めて定義情報を表示 |
| Define and Expand Measure           | 依存するメジャーの内部関数を含めて定義情報を表示 |
| Show Objects That Reference Measure | 参照されているメジャーの情報を表示       |



1. メジャーを右クリックし、表示したい項目を表示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/c67311d8-ee0d-fd76-7808-a1f255c746af.png)




2. 情報を確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/c3189949-c7ef-14f7-5f10-eafe46030623.png)




※取得可能な情報のサンプル

下記のメジャーをの情報を取得します。

```DAX
科目数のカウント = COUNTA('診療科目別一般病院数'[診療科目コード]) 

科目数のカウント_千単位 = [科目数のカウント] / 10^3 
```



[科目数のカウント_千単位]の"Define Measure"の情報

```DAX
DEFINE 
MEASURE '診療科目別一般病院数'[科目数のカウント_千単位] = [科目数のカウント] / 10^3
```



[科目数のカウント_千単位]の"Define Dependent Measures"の情報

```DAX
DEFINE 

---- MODEL MEASURES BEGIN ----
MEASURE '診療科目別一般病院数'[科目数のカウント] = COUNTA('診療科目別一般病院数'[診療科目コード])
---- MODEL MEASURES END ----

MEASURE '診療科目別一般病院数'[科目数のカウント_千単位] = [科目数のカウント] / 10^3
```



[科目数のカウント_千単位]の"Define and Expand Measure"の情報

```DAX
DEFINE 
MEASURE '診療科目別一般病院数'[科目数のカウント_千単位] =  CALCULATE ( COUNTA('診療科目別一般病院数'[診療科目コード]) ) / 10^3
```

※式が長くなった場合に、適切に表示できないことがあるので注意が必要です。



[科目数のカウント]の"Show Objects That Reference Measure"の情報

```DAX
SELECT 
 [OBJECT_TYPE] AS [Object Type], 
 [TABLE] AS [Object's Table], 
 [OBJECT] AS [Object], 
 [REFERENCED_TABLE] AS [Referenced Table], 
 [REFERENCED_OBJECT] AS [Referenced Object], 
 [REFERENCED_OBJECT_TYPE] AS [Referenced Object Type] 
FROM $SYSTEM.DISCOVER_CALC_DEPENDENCY 
WHERE [REFERENCED_OBJECT] = '科目数のカウント'
ORDER BY [OBJECT_TYPE]
```

実行結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/aa24b13f-1257-c1fc-e3ef-c27edaaed78d.png)






#### 2-3. TSVファイルでのアウトプット方法

1. "OUTPUT"にて、"File"を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/ff82cab2-689e-3cbd-11ce-6239e5c89221.png)




2. ファイルの保存先をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/a9eb9874-1195-c2a8-c371-3108af450b55.png)




3. クエリ結果が保存されていることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/a144e20d-caa8-e4b9-5a35-d221b62980af.png)




#### 2-4. クエリの実行モードを変更

パフォーマンス検証を実施する場合など、キャッシュを削除してからクエリを実行することが可能です。



1. "RUN"にて、"Clear Cache then Run"を選択し、クエリを実行する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/393b1e26-e0f5-470c-1fb2-7e7386341f99.png)






#### 2-5. パラメータを利用してクエリを実行する方法

"@[パラメータ名]"という記載を行うことで、パラメータに応じたクエリを実行できます。

パラメータ情報をクエリに記載することで、パラメータの入力作業が省略可能です。



1. 下記のメジャーを記載します。



```DAX
EVALUATE
    FILTER(
       '年マスタ',
       '年マスタ'[年] = @年
       )
```



2. パラメータ値入力し、"OK"を選択する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/e7c9be2f-2800-e9f3-a2dd-41fe5995ee1a.png)




3. クエリの結果を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/7bd11554-4ef6-0108-225b-d369d7484445.png)




4. 再度クエリを実行し、パラメータ値を入力し、"Write Parameter XML"を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/5ab62d11-b877-b583-8d50-cd3cf7414380.png)




5. XMLが追記されたクエリを実行して、結果を確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/2c539409-ad78-840f-717d-8445fe8805f8.png)


```DAX
<Parameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:schemas-microsoft-com:xml-analysis">  <Parameter>
    <Name>年</Name>
    <Value xsi:type="xsd: string">2014</Value>
  </Parameter>
</Parameters>

EVALUATE
    FILTER(
       '年マスタ',
       '年マスタ'[年] = @年
       )
```



### 3. サーバー監視

#### 3.-1. モデルの情報確認

1. "Advanced"タブにある"View Metrics"を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/e6446f1e-b2e0-af7e-2b4c-86fa53f5a269.png)




2. データサイズ等のモデル情報を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/07222053-e9f5-d248-638d-85acabc98bda.png)




#### 3-2. DMVによるデータ確認

1. "DMV"タブにある項目をドラッグアンドドロップします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/ce6c9b21-4c55-0b4f-ca59-8a9975323ab7.png)




2. 実行結果を確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/ae3f0960-d5f0-4ccb-520c-71d3aef51a02.png)




#### 3-3. クエリのプランの確認

1. "Home"タブにある"Query Plan"を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/31f6ad02-4ba2-59ab-c482-d7bea9c2c616.png)





2. クエリプランの結果を確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/0422023a-ebac-a795-aa81-72fc8b809eba.png)




#### 3-4. クエリ実行情報の確認

本機能により、サーバーがクエリの処理に費やした合計時間等のデータを取得できます。取得可能な情報については、[ドキュメント](https://daxstudio.org/documentation/features/server-timings-trace/)を参照してください。



1. "Home"タブにある"Server Timing"を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/04d95d1c-475f-06c3-bfe1-35e06dbb5b78.png)




2. クエリ実行情報を確認します。

![uploading-0]()




## 関連項目

なし。



## 参考

- サイト
  - [DAX Studio Feature List](https://daxstudio.org/documentation/features/)

- ツールのダウンロードサイト
  - [DAX Studio](https://daxstudio.org/)