【Power Queryはあくまでコードでできています。これが今回のポイントです】
Power Queryはとても便利です。メニューをクリック操作していくだけでかなりのことができます
但し、メニュー操作に慣れてしまうと、エラーが起こった時に対処方法が分からなかったりします
そして、もう一つ問題があります
Power Queryが登場してから数年が経ちました
他の方が作成したPower Queryをメンテナンスする機会も増えていくと思います
この時、コード自体を理解できないとメンテナンスは行いにくいです
ですので、これからはPower Queryで書かれているMコードを理解できることも重要になっていくと思います
私も他の方が作成したPower Queryを修正する仕事をしていますが、Mコードを直接理解できないと仕事になりません
今回の記事を通じて、Mコードに慣れる機会にして頂けると嬉しいです
但し、今回の記事ではMコードを書くことは意図していません
あくまで、Mコードを読めるように訓練していく必要性と、Mコードを読む勘所を掴んで頂きたいと思います
目次
今回のポイント
Power QueryのMコードはStepが連なってできています
ここがM言語の最大のポイントです
しかも前後左右、Step間で整合性が取られています
このStepに慣れるとそのままM言語に慣れることができます
Stepの中身の確認
ここからは実際に同じように手を動かしてみて頂くと分かりやすいと思います
たとえば、以下の画像のような平均金額を計算したPower Queryがあるとします
もちろんStepは「ソース」からはじまっています
Stepの中身は2つの方法で見ることができます
一つは数式バーです
二つめは詳細エディターです
こちらはホームタブから見ることができます
詳細エディターをクリックするとコードを丸ごと見ることができます
コードの中身を見て頂くと前後、Stepがつながっているのが良くわかります
let
①ソース = Excel.CurrentWorkbook(){[Name=”売上データ”]}[Content],
②変更された型 = Table.TransformColumnTypes(①ソース,{{“日付”, type datetime}, {“客先”, type text}, {“商品”, type text}, {“売上金額”, Int64.Type}}),
③計算された平均 = List.Average(②変更された型[売上金額])
in
③計算された平均
Stepの意味合い
試しにこちらの数式の中身を「ソース」に変えてみます
そうするとどうなるでしょう?
表示はソースStepの内容になります
つまり、Step名自体に意味があります
Step名そのものが「データテーブル」を意味します
よくあるエラー
ここからは実践的な内容として、よく起こるエラーと対策について紹介します
ソースの変更
ソースステップの数式を見てみましょう!
数式の中身は次のようになっています
= Excel.CurrentWorkbook(){[Name=”売上データ”]}[Content]
試しにデータソースとなっている「売上データ」を「売上データ2」に変えてみましょう!
すると次の画像のようなエラーが発生します
この手のエラーはよく発生します
この場合、元のテーブル名に戻すか次のように数式を変更します
そうすればエラーは解消されます
変更された型
今度はソースステップで列名を変更してみます
そうすると以下の画像のようなエラーがでます
こちらはよく起こるタイプのエラーです
ところで「変更された型」Stepとはなんでしょう?
= Table.TransformColumnTypes(#”名前が変更された列 “,{{“日付”, type datetime}, {“客先”, type text}, {“商品”, type text}, {“売上金額”, Int64.Type}})
この「変更された型」Stepでは、各列の形式を設定しています
ここで1つ前にStepも含めて「変更された型」Stepを見てみましょう!
①名前が変更された列 = Table.RenameColumns(ソース,{{“商品”, “商品2”}}),
②変更された型 = Table.TransformColumnTypes(名前が変更された列,{{“日付”, type datetime}, {“客先”, type text}, {“商品”, type text}, {“売上金額”, Int64.Type}}),
①名前が変更された列Stepでは「商品」列を「商品2」列に列名を変更しています
次の①変更された型では「Table.TransformColumnTypes(名前が変更された列」となっているので、①の名前が変更された列のテーブルデータを引き継いでます
つまり、「商品2」の列名を持つテーブルデータを引き継いでます
でも、②変更された型Stepでは商品列を「type text」、文字列形式にしています
{“商品”, type text}
ということは、既に存在しない列名を文字列形式に変更しようとしています
ですので、前述のエラーメッセージが出るわけです
ではどうやってエラーを解消したらいいでしょう?
一番シンプルなのは変更された型Stepを削除することです
これで、Step間の整合性が取れるからです
let
ソース = Excel.CurrentWorkbook(){[Name=”売上データ2″]}[Content],
名前が変更された列 = Table.RenameColumns(ソース,{{“商品”, “商品2”}}),
計算された平均 = List.Average(名前が変更された列[売上金額])
in
計算された平均
では、どうやって形式変更を行ったらいいでしょうか?
手動で各列を変更するか、すべての列を選択した上で「データ型の検出」を行います
ちなみに、「変更された型」の自動設定を解除したかったら、ファイルタブから「クエリのオプション」を選択します
次に開く画面で「データの読み込み」から「非構造化ソース・・・を検出しない」を設定しておきます
そうすれば、次から「変更された型」Stepは自動で設定されなくなります
<まとめ>
今回の記事では、M言語/コードに慣れるきっかけになるような事例を幾つか紹介させて頂きました
この記事だけで飛躍的にPower Queryの技術が向上するわけではないですが、コードに注目していけば継続的に技術が向上していくはずです
今回の記事は本当に触りだけですが、本格的にM言語を学びたい方はこちらの記事をぜひご利用ください
尚、Udemyで動画コース「Power Queryのメニューにはない裏技ができる! M関数を学んで使えるようになる講座」をリリースしています
期間限定ですが、無料クーポンを提供させて頂きますので、ぜひご利用ください!
終了したら、レビュー投稿の程よろしくお願いします!
今後の参考にさせて頂きます!!
コメントを残す