![見出し画像](https://assets.st-note.com/production/uploads/images/78042741/rectangle_large_type_2_f061459712038b690788979c5173a51f.png?width=800)
第39回 ほえほえ@DX塾
登壇者:ほえほえ@DX塾
日時 :2022年5月7日 20時~
テーマ:実践PowerQuery講座。複数テーブルのドッキングとM言語。
![](https://assets.st-note.com/img/1651919398600-82qW5Pukzo.png)
今日の注目点は・・・
本当に2時間で終わるのか!
です。
只今20時06分
それでは始まり始まり。
M言語をガンダムで例えると・・・エルメス!
モビルスーツだなんだではない!
![](https://assets.st-note.com/img/1651921713252-G4Kd8wIqjL.png)
以下 資料のライセンス
![](https://assets.st-note.com/img/1651919907845-SjvA578JNF.png?width=800)
![](https://assets.st-note.com/img/1651921770143-GinANQMB0i.png?width=800)
簡単に言うと
・どんな利用方法でも構わない。
・ライセンスは明示すること。
・責任は負いません。
![](https://assets.st-note.com/img/1651922621686-rVvE4pkxz3.png?width=800)
![](https://assets.st-note.com/img/1651922396477-sWLZxJiz3j.png?width=800)
結果はこれ。E列に表Bになし、一致などが表示される。
![](https://assets.st-note.com/img/1651922575048-3GtElF5V1o.png?width=800)
![](https://assets.st-note.com/img/1651922482713-0raRWqDHZU.png?width=800)
これを実行するコードはこれ
![](https://assets.st-note.com/img/1651922499814-ru8OchrHQI.png?width=800)
![](https://assets.st-note.com/img/1651922524578-Y1VZXHNmCa.png?width=800)
これをGUIで作ったときにどう作成され、どう動いているのかを解説します。
事前準備
クエリオプション 既定のクエリ読込設定を変えよう。
毎回テーブルに読み込まれると開発効率が悪い
![](https://assets.st-note.com/img/1651922654931-U0oak9ih8X.png?width=800)
開発モデル
パワークエリを使うことで、データ抽出層もNonVBAで対応できる。
![](https://assets.st-note.com/img/1651922735988-o4MFZN86pC.png?width=800)
VBAで取得するよりいろいろ簡単にできる。
全体図
![](https://assets.st-note.com/img/1651922980641-uKXOkLcoFJ.png?width=800)
![](https://assets.st-note.com/img/1651923009353-G0zBSjIe3k.png?width=800)
(非常にシンプルなモデルです)・・・・
![](https://assets.st-note.com/img/1651923088707-x4bDnWEOQX.png)
![](https://assets.st-note.com/img/1651923097440-kkQEBs8Qy4.png?width=800)
クエリは名前とFormulaだけ。
セキュリティ面
クエリのホールディング
![](https://assets.st-note.com/img/1651923237896-hs7adtKe5Z.png?width=800)
選択クエリにWhere ID in を使うが、これが管理者には分かってしまう。
ドキュメント
PowerQueryの良書はほぼない。
![](https://assets.st-note.com/img/1651923363449-YmueHJRptX.png?width=800)
Microsoft Docsは読みにくいが、使えるようになりたいなら頑張るしかない。
![](https://assets.st-note.com/img/1651923428271-8GgNK6jh88.png?width=800)
アクセス記法
![](https://assets.st-note.com/img/1651923514145-RxQct8xP3c.png?width=800)
![](https://assets.st-note.com/img/1651923553782-AJ0qiMX4Tx.png?width=800)
![](https://assets.st-note.com/img/1651923650234-Q8etM8fwzN.png)
レコードから値を抽出するのが[]。これがLookup。VBAで言う辞書。
![](https://assets.st-note.com/img/1651923702470-pnFMmYib7M.png)
{}がインデクシング。VBAで言う配列。
![](https://assets.st-note.com/img/1651923783147-SQmYXAVyHn.png)
テーブルはレコードとインデクシングの組み合わせ。
なので・・
![](https://assets.st-note.com/img/1651923864314-8vnIkUmM6E.png)
こんな書き方ができる。
![](https://assets.st-note.com/img/1651923897371-Bc5Rwq86fO.png)
![](https://assets.st-note.com/img/1651923928418-TaC7ZFLetS.png)
![](https://assets.st-note.com/img/1651923949910-FeeHsCB3AF.png)
資料にも細かい説明あり。
![](https://assets.st-note.com/img/1651924042856-ONgDZCWOnn.png?width=800)
テーブル{[地域="高知県"]} みたいな記法もある!
![](https://assets.st-note.com/img/1651924191749-k42z83m4pL.png)
パワークエリの強みと活かし方
![](https://assets.st-note.com/img/1651924218430-5wHACiRG09.png?width=800)
結論:M式は手で修正できるようになってこそ!
VBAとの学習比較
![](https://assets.st-note.com/img/1651924662828-lKKMaM3BpC.png?width=800)
VBAは難しい言語。Excelの知識も必要。
一方でM言語は式ベース。制御構造がないので、短時間で基本知識が身に付く。
VBAは200時間の学習がスタート、M言語は100時間の学習がゴール。ただしM言語の立ち上がり曲線は急なので、最初から手組をするのではなくGUIの生成するコードをみて勉強していくとよい。
ドリルダウン
![](https://assets.st-note.com/img/1651926164512-a4RnuRheNs.png?width=800)
これを1行毎に確認しながら、記法の確認。
見たいデータは一気にレコードにする記法はこれ。
![](https://assets.st-note.com/img/1651926248394-HSAjZN35Gc.png?width=800)
![](https://assets.st-note.com/img/1651926640949-g7VGBQJMUc.png)
ドリルダウンでインデクシングとルックアップの話
![](https://assets.st-note.com/img/1651926979686-uFnmTxj8bC.png)
(これは良い説明だったぁ)
ここから突合シナリオ
![](https://assets.st-note.com/img/1651927201378-BIhMtV2ScC.png?width=800)
Table.nestedJoin(表A,"s_code",表B, "s_code", ”表B", JoinKind.FullOuter)
これが2Tableの結合のキモ! PowerQueryの強みの一つ
![](https://assets.st-note.com/img/1651927750333-pANizGajCg.png?width=800)
![](https://assets.st-note.com/img/1651927780140-Hx5rZkYiKL.png?width=800)
![](https://assets.st-note.com/img/1651929147922-KJzdIwtTCo.png?width=800)
組み込み関数化
中級超えればライブラリ化も可能
![](https://assets.st-note.com/img/1651928021310-FRgdknkCLZ.png?width=800)
例えば・・・
![](https://assets.st-note.com/img/1651928066668-5BQQdcjnpX.png?width=800)
ただ、ここまでする必要性は低い。M言語の標準関数で対応可能のなものが多い。
M言語のメリット
データの取得から変形、突合まで一気通貫で記述できる。
突合などの典型的な処理であれば手組のM式をテンプレートとして再利用しやすい。
終了!
ここまでで22時15分! 2時間で終わったと言ってもいい感じでしょう!
セーーーーーフ!
講義に使用したファイル
ちゅんちゅん日誌はこちら
https://www.notion.so/kotorinchunchun/hoehoe-911c533b35a549c2855d26af37af535d
ほえほえ先生のパワク講座はコチラ。DMで!
![](https://assets.st-note.com/img/1651930305909-D1ZSPWbq6N.png)
https://twitter.com/hoehoe1234/status/1522225643181985792?s=20&t=jIAbwCYUSrknKSYE0X6LSA
この記事が気に入ったらサポートをしてみませんか?