PowerBIなどのセルフサービスBIツールでは、取り込んだデータをそのまま使用するだけでなく、様々な形でデータを追加・加工・集計することができます。, 今回の記事では、データ分析を行う上で、避けては通れないデータ項目の追加について、どのような方法があるのかをまとめてみました。, PowerBIでは、新たなデータ項目を追加するには、4つの方法を選ぶことができます。, 図にしてみると、PowerBIでレポートを作成するまでの、データの流れに沿って、それぞれのタイミングでデータ項目を追加する方法があるイメージです。, 同じデータ項目を追加する方法でも、タイミング、データを実際に持つのか・都度計算するのか、メンテナンス性に優れているのかという観点から使われ方が異なります。, ここからは、どんな時にどの方法を使えばよいかを判断するために、それぞれの特徴を簡単に解説していきます。, データソース(DBやExcel,CSV)側に新たに項目を追加して、その変更されたデータを改めて取り込むという方式です。, こちらはある意味シンプルな方法ですが、PowerBI上での再設定の手間は一番かかる方法といえます。, これはシンプルなデータをそのままPowerBI上に取り込んでいて、取り込み時にはほとんど処理を行っていないような場合や、大量のデータをDB側で事前に計算させておいた方が、パフォーマンス上好ましい場合などに利用されます。, そうでない場合、つまり、データの取り込み時に複雑な計算などを行っているような場合、データ項目が変わることで、クエリの再設定などが必要となるので、頻繁に行うことはオススメできません。, こちらは、クエリエディターの [カスタム列の追加] を使用してクエリの一部として作成する方法です。, PowerBIでは、クエリの作成時もしくは変更時に「カスタム列」としてデータを追加できます。, クエリディタを起動して、「列の追加」タブで、[カスタム列]を選ぶと、対象のクエリに含まれる列を計算して、新たなデータ項目を作成できます。, つまり他のテーブルの項目を使おうとすると、クエリのマージ(SQL的な表現ではJOIN)した上で、計算するといったステップが必要になるということですね。, このような処理をたくさん追加していくと、データモデルに含まれるデータ量の増大やパフォーマンス低下の要因となりえます。, また、データソースを変更することに比べるとメンテナンス性はやや高いですが、データ分析を行うユーザ部門の担当者が気軽に行える作業・操作とは言えません。, イメージとしては、テーブルに新たに項目を追加し、計算した項目を追加するという形となります。, PowerBI上の操作としては、テーブルビュー(もしくはレポートビュー)で、[モデリング]タブのメニュー[新しい列]を選ぶと、新たなフィールドが作成され、計算式を入力することができます。, ここでの計算式は、DAXと呼ばれる言語を使って、数式や関数を駆使して表現する必要があります。, 言語というとハードルが高いように感じますが、簡単な四則演算などであれば、Excelとそれほど変わりません。(DAXでは、項目名が左辺に必要です), この方法では、データソースやクエリを変更することなくデータ項目を新たに作成できるので、メンテナンス性はかなり高く、また、他のテーブルのデータを参照することも可能です。, ただし、他のテーブルの値を参照するには、フィルタ条件などを記述するなど、やや複雑な式を記入していく必要があり、DAXに関する基礎的な知識が求められます。, 多くの場合、この計算項目を使ってデータ項目を追加していくことになりますが、データの中身によっては、次に説明するメジャーの作成でなければ正しい数値が計算されない結果を招くことがあるため、注意が必要です。, 先ほど説明した計算項目は、計算結果をデータとしてモデル内に保持する形式であるため、相対的な値(平均値、最小値や最大値、比率など)の表示には向いていません。, 特にシェアや前年比率などを分析の視点に沿って各層で集計を行うと計算結果が実際の値と異なってしますことがあります。, 例えば、商品A,B,Cの3つがあり、以下のような売上実績となっていたとしましょう。(データは売上数量), データとしては、月別商品別の売り上げの数量、商品Aの全体の販売数に対する売上数量のシェアが保存されています。, ここで、商品Aのシェアを月別データのレベル(粒度)で保持し、商品Aのシェアを3か月のそれぞれの値の平均値で表すとした場合、商品Aのシェアの値は、以下のように表示されてしまいます。, という計算となりますので、商品Aのシェアの平均値をそのままとったという意味では誤りではりません。, つまり、シェアなどの比率のデータを、細かいレベルで計算結果の値として保持していた場合には、平均値をとるなどの単純な集計を行うと、正しい値が表示できないということですね。, これはもちろんシェアだけでなく、経営指標などでもよく使われる比率のデータ全般に言えることです。, PowerBIでデータ項目として、商品Aのシェアを計算項目として作成し、テーブルにデータを保持して、レポートで単純に表示すると、上記の計算と同じことが起こります。, ようやくここでメジャーが出てきますが、PowerBIのメジャーは、このようなことが起こらないように、レポートの操作が行われた段階で、常に再計算を行う項目です。, メジャーは比率などの計算のほかに、売上分析などでは必須といえる、前年度の受注金額や前年度売上比率なども簡単に定義できます。, 前年度の売上金額を項目として追加する場合は、テーブルビュー(もしくはレポートビュー)で、「モデリング」タブのメニュー「新しメジャー」を選び、計算式を入力します。, 計算項目である「新しい列」の追加とほぼ同じ手順で紛らわしいので、注意してください。, 前年度金額 = CALCULATE(SUM(‘受注明細'[売上金額]),PREVIOUSYEAR(‘受注'[受注日]. ブログを報告する, 【Excel Power Query入門】Power Queryを使うと何ができるのか, "ソース = Excel.Workbook(File.Contents(""C:\Users\USER\Desktop\test.xlsx""), null, true),", "Sheet1_Sheet = ソース{[Item=""Sheet1"",Kind=""Sheet""]}[Data],", "変更された型 = Table.TransformColumnTypes(Sheet1_Sheet,{{""Column1"", type text}, {""Column2"", type text}})", "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Sheet1;Extended Properties=""""". | By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. Excelを使った外部データへの接続を協力にアシストしてくれるような気がするPower Query。, Power Queryについて全くの初心者である私が、PowerQueryについて調べながら、道なき道を進み、, これからPower Queryについて学ぼうとする人の少しでも役に立つように道を作っていこうと思います。, 本当にPower Queryについて全くの初心者なので、自分が調べて手を動かして理解したてほやほやのことを書いていきます。, Excel 2019で他のブックへ接続するマクロを記録をすると、この機能が使われていることが確認できます。, 何が何だかわからないのですが、これで一瞬で他のブックのデータを取得することができました。, どうやら他のブックやCSVといった他の資源から簡単にデータを取得できる機能のようです。, Power Queryは、データ変換およびデータ準備エンジンです。Power Queryには、ソースからデータを取得するためのグラフィカルインターフェイスと、変換を適用するためのPower Queryエディターが付属しています。エンジンは多くの製品やサービスで利用できるため、データの保存先は、Power Queryが使用された場所によって異なります。Power Queryを使用すると、データの抽出、変換、および読み込み(ETL)処理を実行できます。, 「Power Queryは、データ変換、データ準備エンジン」で「Power Queryを使用すると、データの抽出、変換、および読み込み(ETL)処理を実行できます。」とのことです。, ビジネスユーザーは、時間の最大80%をデータの準備に費やし、分析と意思決定の時間を遅らせます。この状況を引き起こす多くの課題があり、Power Queryはそれらの多くに対処するのに役立ちます。, じゃあ、Poewr Queryを使えば最大で80%の無駄な時間を減らせるってことか!!, Power Queryは専用のエディターが用意されており、グラフィカルに使うことができるようです。, そしてエディターで作った変換は、「 Power Query式言語(M言語)」という専用の言語に自動で変換されます。, グラフィカルではなく、バッチ的にプログラムで使う場合は、このM言語を理解する必要がありそうです。, ここまで見てきたように、Power Queryをマスターすれば、他の資源へ効率的にアクセスできそうです。, 次回から、Power Queryについてマイクロソフトのドキュメントを参考にしつつ、, Power Queryの世界へ入って行こうと思いますので、お付き合いいただればと思います。, さて、Power Queryの連載?を今回から始めていきますが、どのくらい続くのか、どんな話が出てくるのか、, このブログで紹介している内容は、多分に私見が含まれています。それでも、なるべく正確性を保つよう心がけていますが「それは違うんじゃない?」などのご意見がありましたらご連絡ください。また、このブログに掲載しているコードは利用規約の範囲で自由にお使いください。, shinmai_papaさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?, Powered by Hatena Blog