【上級編】【PowerQuery】いきなり作るな!開発に必要な設計とは!?

今回はPowerQueyの設計について紹介します!
参照」と「複製」を使いこなして
効率の良い設計を考えていきます!

どんなものを作るにしても
初めの設計はとても肝心です!

何も考えず思いつくままに作っていると後で

あ、ココこうしておけば良かった…

祭りです。
作り直そうにも修正箇所があちこちあって大変です!

そんなことにならないように
どのように気を付ければいいのか?

その考え方を1つ紹介したいと思います!

動画で見たい方はコチラ

改修が手間になってしまう設計

かじむー

まずはお勧めしない設計を見ていくよ~!

今回作る内容

今回は分かり易く伝えるために
出来るだけシンプルな中身で考えていこうと思います!

ではどんなものを作っていくかをまず説明します!
にいまこのような勤怠表があります。
山田・鈴木・佐藤・田中の4人の出勤時間を
日別に管理しているファイルです。

これをの様な状態に出力したいです!
4人それぞれシートに分けて
9時以降の出勤時間だけを出力させようと思います!

さて皆さんだったら
PowerQueryでどのように作りますか?

まずはお勧めしない方法で作ってみようと思います!

複製を使った作り方

では修正が多く発生してしまう
お勧めしない作り方でやってみます!

こちらが勤怠表ファイルに接続したものです。

じゃあこのクエリから
山田さんの分を作ってみます!

ではこのクエリを複製します。
そしてフィルタで「山田」で絞り
さらに出勤時間を「9時以降」で絞りましょう!

そしてこれをシートに出力させます!

これで山田さん分が出来ましたね!

では同じ様に
鈴木・佐藤・田中の3つ分を作りましょうか!

山田さんのクエリを複製して
フィルタ条件の「山田」を「鈴木」と変えて
鈴木さん分が出来ました!

はい、これどこが不安要素でしょうか?

もしこの「9時以降」という条件を
変更する修正が発生したとします!
8時以降に変えてくれる?」ってなったら
どうなるでしょうか?

修正する箇所が4カ所ありますよね?
という事は4回も修正をしなければなりません!
今回は簡単な作りなのであまり負担に思わないかもしれませんが
これが50カ所あるとゾッとしますよね?

じゃあ修正が発生しない様に初めから完璧に作ればいいんじゃない?


と思う方も居ると思います!

でも考えてみて下さい。

あなたのスマホに入ってるアプリ、何回アップデートされましたか?

アップデートというのは言わば修正です。
プロが作るものでさえ修正が継続的に発生しているんですから
私達みたいな者が、修正から逃げる事はできません!

ではどのように気を付けて作ればい良いのか?
ポイントは「同じことを何回もしない」です。

改修が楽になる設計

かじむー

「同じ事を何回もしない」を意識して設計してみよう!

複製と参照の違い

では振り出しに戻って
初めから作っていきましょう!

先程「9時以降」で絞るという処理を
4人全員に行いましたね!

これ「同じことを4回もやってる」んですよね!

なのでこれを1つにまとめておきます!

まずこの初めのクエリに対して
9時以降」で絞っておきます

ではこのクエリを「参照」します!

ここで参照とは何か?少し説明します!
「複製」と「参照」というのは別物です!

複製

出勤表」クエリを複製したとします。
するとどんなクエリが出来上がるか?

①全く同じステップ内容のクエリが出来上がる
出勤表クエリで行った処理(ステップ)と
全く同じ内容のクエリが出来上がります。

②複製元の変更に影響されない
出勤表(複製元)クエリの中で
「9時以降」→「8時以降」と変更しても
複製して出来たクエリは「9時以降」のまま!

参照

出勤表」クエリを参照したとします。
するとどんなクエリが出来上がるか?

①最終結果を引き継いだクエリが出来上がる
参照して出来たクエリの
詳細エディターを見てみると…

= 出勤表」となってますよね?
つまり「出勤表」クエリの最終結果が
このクエリに吐き出される形になっています。

②参照元の変更に影響する
という事は
出勤表(参照元)クエリの中で
「9時以降」→「8時以降」と変更すると
参照して出来たクエリは「8時以降」に変わります!

かじむー

複製と参照の違いが分かってきたかな?

参照を使った作り方

要するに
まとめておくべき処理は1つにまとめて作って
そこからはクエリを参照してそれぞれ作っていく感じです!

まずは4人それぞれに同じ条件となる
「9時以降に絞る」という処理を
出勤表クエリで済ませておく!

ではまず一人分を作る!
出勤表クエリを参照する!

山田さんの分を作る場合は
参照して出来たクエリにて
「山田」と絞るだけでOKですね!

これと同じ方法で他3人のクエリを作れば完成ですね!

はい!こんな感じですね!
こうしておけば、もし「9時以降」を「8時以降」に
変更する修正が発生したとしても
参照元のクエリ1カ所修正するだけで済むようになりました!

今回のまとめ

▼修正が手間になる作り

同じ処理複数個所存在する

▼修正が楽になる作り

同じ処理1つにまとめる
それを参照して異なる処理を作る

今回作ったものは
簡単なものだったので
そこまで劇的に見えなかったかもしれませんが
開発する内容がもっと濃くなってくると
とても重要な設計になってきます。

小さな開発でも
出来るだけ意識してみて下さい!

かじむー

業務効率化のご相談はお気軽どうぞ♪