24
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Microsoft Power BIAdvent Calendar 2017

Day 2

複製すべきか、参照すべきか、それが問題だ

Last updated at Posted at 2017-12-01

タイトルは単に勢いです。"問題"はないです。
Power BI Desktop や Excel などの クエリ エディター のお話。クエリ エディター では複数のクエリを作成や修正、そして管理することができます。データモデルにロードする分析用のデータを作成する作業、いわゆる ETL が結構手間で時間がかかるんですよね。一度完成してしまえばあとは調整的な流れでよいのですが、あれこれやっているときにクエリの複製と参照が思いのほか役に立ちます。機能を理解して使うととても便利なのです。

#クエリの複製と参照
複製 と 参照 で作成されたクエリは、その時点では同じ結果を返すクエリになる。
##複製(Duplicate)

  • 複製元と同じ内容のクエリを新規に作成する。
  • クエリのコピペと同じ結果が得られる。
  • 複製元を変更したとき、複製したクエリには影響を受けない。

##参照(Reference)

  • 参照元の結果を参照するクエリを新規に作成する。
  • 参照元を変更したとき、参照しているクエリはその影響を受ける。y = g(f(x)) ということ。

#使いどころ
##複製
適用するステップは順番を変えてみたりいろいろなことができるのだけど、元に戻したいとかうまくいっていたところまで戻したいとき、折をみて複製してちょっと置いとくみたいな使い方をよくしています。
ちょっと置いておくということについては、クエリをコピーすると Mコードがクリップボードに入るので任意のエディターなど貼り付けることも可能だし、別に起動している クエリ エディターにペーストすることも可能。また、クエリはユーザー定義関数(UDF)にすることが可能なので、繰り返し使用されるロジックが組みあがったら複製して引数の部分を加工するという感じですね。

##参照
データ抽出に使用するクエリから複数の種類のデータを取得したりすることがあります。例えば、ひとつの Excel ワークブックから複数のデータを取得しようとするとき。

対象の Excel ワークブックを選択し、ブック内のメタデータ(テーブル/名前付き範囲/シートの3種類)から選択できる [ナビゲーター] ダイアログ。ここで テーブルなどを選択せず、ルートから [編集] を押下。
ナビゲーター ダイアログ

クエリ エディターにはメタデータ一覧が表示される。多くの場合、"Data"列 のリンクを使ってドリルダウンをしていくのだけど、まずはこのまま。このクエリには、データソースとした Excel ワークブックのフルネームが使われていることがポイント。 (テーブルなどを選択して作成されたクエリの場合は、[適用したステップ] で "ソース" までさかのぼれば同じ状態になる)
クエリ エディター2

先にこのクエリを参照するクエリを作成していく。
クエリ エディター3

[参照]で作成したクエリの "Data"列から[ドリルダウン] もしくは、[新しいクエリとして追加]する。

  • [ドリルダウン] は 作業対象のクエリでドリルダウン(展開)
  • [新しいクエリとして追加] は 作業対象のクエリをコピーしドリルダウン(展開)

クエリ エディター4

必要なだけ参照するクエリを作成。そして、[クエリの依存関係] でどのような参照がされているか確認することが可能。

1層目:File.Contents 関数 - 最初に作成されたクエリ(まだバイナリの状態)
2層目:Excel.WorkBook 関数 で メタデータまで展開 - 最初に作成されたクエリ
3層目:テーブルにそれぞれドリルダウン - [参照] で作成されたクエリ

クエリ エディター

参照して作成したクエリには、データソースにした Excel ワークブックのフルネームは使われていない。ナビゲーター ダイアログ でテーブルなどを複数選択し作成されたクエリと比較してみるとよい。

##確認
データソースとした Excel ワークブックが別のディレクトリに移動したり、ファイル名を変更したとき、参照元クエリのファイルフルネームの部分を変更すれば すべてのクエリは期待する結果を返すことができる。参照の挙動の確認ではあるけれでも要件を満たすならこれでよいし、[パラメーター]も使うとクエリの管理面がシンプルになると思う。

その他

24
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?