StackなどMicrosoftのクラウドサービスの管理者の方向けの情報発信と1対1での相談先の活動をしていますHome記事リクエストサイトについてHome記事リクエストサイトについて最近Youtubeに力を入れてます。チャンネル登録お願いします!胡田昌彦のコンピューター系チャンネル昔のExcelしか使ったことがない人むけのゆるいPowerBI入門的な記事その1・・・というか自分の理解の記録PowerBITwitterFacebook0はてブ0Google+Pocket0LINEコピー2019.03.15スポンサーリンク皆さんこんにちは。今回は珍しくPowerBIのお話です。私はPowerBIはデータ可視化ツールとしては以前からずっと便利に使っているのですが、PowerBI内でデータを加工したりすることはこれまで避けていました。いうと「良くわからなくて、新しい方法を学ぶ時間が取れなかったから」です。これは単純に言い訳なのですが、私はプログラムが書けるし書くことが好きなので、なにかデータ加工的な事をする必要がある場合にはデータベースの外側でプログラムで書いてしまいます。データベースをプログラムで更新しちゃう。出来上がったデータベースに対してPowerBIを接続してしまえば必要な可視化が簡単にできてしまいます。PowerBIの中でテーブルを定義して、データを操作して...ということはしなくてもどうにでもなったのです。他の人と一緒にトレーニングも兼ねてちょっとした複数のcsvファイルを元にしたレポートを作成する機会があり、PowerBIで全部やりたいという希望がその一緒に作業する人にあったので、一緒に付き合うことにしました。いや、勝手がわからなくて結構苦労しました(笑というわけで、私のような「昔ExcelでVLookup関数を駆使して頑張ったことあったけどもうやりたくないなぁ...」と言っているような知識レベルの人に向けてPowerBIで戸惑ったところと理解したところを少し書いておきたいと思います。理想的には「(昔の)Excelしか使ったことがない人に向けたPowerBIの導入記事」的な感じになるといいのですが、はて、さて。私はこのあたり本気で初心者かつまともに勉強もせずいじって直感で理解しているだけなのでPowerBIをガリガリやっている人からするとレベルが低かったり効率が悪かったり、他にもっと適切なやり方があったりするのではと思いますが、そこは生暖かい目で見守りつつ、コメントで優しくアドバイスいただければと思います。スポンサーリンク目次とりあえず好き勝手にデータを編集できない1つのセルに「関数を書く」というアプローチではないDAX式とPowerQueryは違うものなので注意!とりあえず好き勝手にデータを編集できないExcelでは新規にファイルを作るとシートがあり、セルがあり、適当な場所にいきなり値を書き込んだり出来るわけですが、PowerBIではそうはいきません。保持できるデータはすべてきちんと定義されたテーブルの形になります。感覚を掴むためにテスト的にテーブルを作ってみて、データを書き込んで...と試してみたかったので、「データの入力」を行いました。出てくるのは「テーブルの作成」画面です。このあたりはExcelよりもAccessに近いんですかね?すいません、Accessもほとんど使ったことなくてですね...。この画面でテーブルを作成するのは特に違和感ありませんでした。列を追加したり、複数レコードにしてみたり、はい。「読み込み」をクリックするとテーブルが作成されます。ここまではまぁ違和感ないのですが、じゃぁ、このテーブルを編集したい!と思うと早速やり方がよくわからなくなりました。この画面では編集できないのですね。これ、裏側ではすべて「クエリ」が作成され、それによってデータが読み込まれたということになっているようですね。「クエリの編集」をクリックすると、このテーブルを生成したクエリを確認、編集することができます。全部クエリで表現されるというのは面白いですね。Excelとは全く異なるアプローチです。「ソース」をクリックすると再度テーブル作成のGUIが表示されました。1つのセルに「関数を書く」というアプローチではないこのテーブルの作成画面は感覚的にはExcelに近い感じで操作出来るのですが、別に関数が書けるわけではないです。こんな感じにExcelでの関数っぽい書き方をしてもたんに文字列になっています。このあたりきちんとテーブルとして列の定義が厳密という感じでしょうか。Excelよりも列の型が厳密なSharePointの感覚に近いという印象です。なにか関数を使って計算等したければ、新しい「列」を定義してその中で列の定義として関数を書いたり、テーブル全体に対して「メジャー」を定義するというアプローチになるようです。(間違ってたら突っ込みください。)「新しい列」をクリックするとこのように列の定義を書くことができます。これはセル1つに対して定義しているのではなくて、列全体の定義です。Excelとは違います。ためしに”あ”と入力してみます。今は2レコードしか無いですが、すべてのレコードの「列」には「あ」と入力されます。列の定義が「あ」なので当然ですね。定義したが「列」であって、Excelのように1セルに入力したのでは無いことがわかります。この列の定義の中では「同じレコードの他の列」を参照することができます。※「テーブル1」だと補完してくれなくて面倒だったのでテーブル名を「Table1」に変更しました。補完してくれますね!「列」の定義をTable1の列1にしたところ、きちんと同じレコードの列1の値が入力されました。自由に参照する事ができますが、PowerBI内のテーブルの定義ではそういうアプローチでは無いことがわかります。この列の定義の中では「DAX式」が書けるのだそうです。やって怒られたから...。DAX式を列の定義として入力してあげればいろいろと他の列の値なんかを使いながらデータ加工ができそうです。Docsたとえば「列」に対して「列1」のテキストの左から3文字を入力してみます。こんな感じに簡単に行なえます。functions)ということを理解しておけばまずOKですね。DAX式とPowerQueryは違うものなので注意!ちなみに、DAX式とクエリの中で記載できるクエリの文法は全く別物なので注意が必要です。いうか私は当初混乱しました。「クエリ」の中で使うものです。Docsクエリの中でも「カスタム列」を追加して「式」を書くことができます。これ、DAXの話とは全くの別物なので混同しないようにする必要がありますね!(私はこの違いを認識するだけで1時間くらい使った気がします...。)さて、ちょっと長くなってしまったのでいったんこれでおしまいにします。いつものブログとはずいぶんスタイルも違うゆるいものになりました。万が一好評だったらまた続きを書きます...。続かない可能性もかなり...。(やっぱり外部プログラムを書いてSQLDBにデータを打ち込んでPowerBIは表示だけに特化させていいんじゃないかという気分が強いのです...。)評価この記事はいかがでしたか?評価を是非聞かせてください。MVP(2014~)。「Windowインフラ管理者入門」という本を書きました。Windows系中心のインフラよりの何でも屋。