PowerQuery、表のマージとインデックス列の追加について
大変ご無沙汰しております。
相変わらず各所からしがらみを受けながら今日までのうのうと生きてきましたが、ブログ更新までの間にやっぱりぽつぽつとイベントって起こるものですね。
ですがその大半がここで書き残すものでもないと思っていますので、今回は唐突ながらExcelのパワークエリについて簡単に書いていきます。
結論ですが、クエリの謎挙動でマージ後の行がめちゃくちゃになるので、予めインデックス列を作成して、諸々データ成形した後にインデックス列で昇順に並べ替えることで元の並び順に整形できるという話。
???
.......使いこなしている人ならなんてことない話なんですが、個人的にこれ忘れたくないなぁと思ったのでひとまず残しておきます。
クエリってそもそも何なのかという話なんですが、簡単には表データを良い感じに整形してくれるExcelの便利ツールの一つです。Office2010あたりからあるみたいですね。「データ」タブ内の「データの取得と変換」の中に用意されています。
一時の小さいデータならば特段必要にはならないツールなんですが、継続的に更新されるデータであって特に外部ツールから出力されるcsvなどの元データを、一つの表に一定のルールでまとめたい時とかに便利です。
と、一度仕組みを作ってしまえばあとはデータを所定のフォルダに入れて解析させるだけなんですが、いつものことながらその仕組みを作るところに少し難点があって....。
それが、今回問題としている「表をマージすると行がぐちゃぐちゃになる」というやつです。現状こちらの根本原因は特定できていませんが(自分だけかもしれないが...)、対処法が某所より示されておりまして、シンプルながら衝撃的でした。
それが、インデックス列を追加するというものですね。何のことはない、ただの先頭行から末尾にかけて並ぶ通し番号が入った列です。この列自体にはそんなに意味をなさないのですが、何かの手違いや操作で表の行が入れ替わった時にこの番号でソートを掛ければ元の順番通りの行に並べ替えられる訳です。
これまで同様の症状が起きた際に、下記のような不完全な対処しかしておらずデータの追加順や整形手順にすごく気を使っていたのですが、今回の対処法で何とか場をしのげそうな気がしました。
現在扱っているデータには日付列があるので、一見それを古い順に並べればいつでも正しい順番になると驕っていましたが、同日取引の行がぐちゃぐちゃになるので却下。
結局、元データを古い順から追加して「 な ぜ か 」データがきれいに整列していたので見過ごして来た。
今回、データを成形するうえで避けては通れない表のマージ操作があったので、軽くネットサーフィンして対処法判明。.......やっぱ自分の頭で考える処置ってろくなものじゃないですね。
ただ、先述通りマージ操作で行がめちゃくちゃになる根本原因はわかっておらず、なんかもやっとしますね.....。
以上、備忘録でした。ちなみに余談ですが、チームで共有するデータについて、原則難しいことはしない方がいいと思っています。良くて関数くらいで、マクロや今回紹介したパワークエリ、その前段にある表のテーブル化などは個人で勝手にやると、可搬性がものすごく悪くなります。自分のPC環境でできていたことでも他の人のPCからは操作できなかったり閲覧すらままならない状況にもなるので、チーム内のルールに則ってデータを扱うと良いです。それでも使いたいならチーム内での周知協議が必須です。(ここで言っている難しいこととは、マクロやパワークエリそのものの難しさではなくてそれを管理、共有することの難しさです。)
......次回はいつ更新されるのやら.....。
もう宅建まで2ヶ月切ったので頑張ります......。