2016/06/20

[取得と変換・Power Query] 列の削除と他の列の削除は全く意味が違います

すでにお気づきの方には申し訳ないエントリーになります(笑)。

取得と変換/Power Queryのクエリエディターで [ホーム] タブの [列の管理] グループにある [列の削除] には2種類の列の削除方法があります。

[列の削除]と[他の列の削除]です。


本当に正直なところ、処理でいらない列を「たまたま」選択したんだったら[列の削除]をして、「たまたま」必要なものを選択していたら[他の列の削除]を選んでいました。

これ、それぞれの Power Query Formula Language を見ると以下になるんですよね。

列の削除

= Table.RemoveColumns(変更された型,{"区分A"})

他の列の削除

= Table.SelectColumns(変更された型,{"日付", "区分A", "数値A"})

列の削除は、そのまま「列の削除」でいいのですが、他の列の削除は、結果的に列を削除しているのですが、実は、「必要な列を選択する」という意味なんですね。

そのため、元データで「やっぱり、この列、いらないね」となって、元データからその列が削除された場合、「列の削除」を指定しているか、「他の列の削除(=必要な列の選択)」をしているかで、クエリ更新時にエラーが出てしまうんです。

クエリで削除しようとしていた元データの列がないと、当然ですが、そんな列はありません、というエラーです。


列の削除は「これは含みたくない列だ」という強い想いがあるもの(言い過ぎですけど)、そういう強い想いがなければ、必要な列を選択して「他の列の削除」とすれば、上記のようなエラーはでない、ということです。

あまり意識しないで「列の削除」を多用していました。必要な列だけを残すために、不要な列を Ctrl キーを押しながら選択して・・・という手順です。これ、本当は必要なデータを選択したほうがいいと感じています。

もちろん、元データの必要な列が削除されれば、「そんな列は見つからない」という、削除と同じエラーになります。が、必要なデータの削除は気が付きやすいですし、そもそも必要ですから注意を払います。
Powered by Blogger.

自己紹介

自分の写真
1989年新卒で日本IBMに入社しダウンサイジング担当としてホストコンピュータと繋げるオフコン、UNIX、PCサーバーのプロジェクトを担当。1997年 MSKK(現日本マイクロソフト)入社、NT4出荷に伴い企業向けサポート部門のビジネスマネージャーとして Excel 使いとなり、2002年 にMSMVPなどをサポートするユーザーコミュ二ティ部門を設立、部門をリード。2006年にMSKK退職後、企業向けのITトレーニング会社・団体に携わり、2014年頃よりPowerBI勉強会主催メンバーの一人として参画、そのコミュニティ活動で MSMVP for Data Platform PowerBI 2017受賞。https://mvp.microsoft.com/ja-jp/PublicProfile/5002635 同年にMVP Awardを返上し、アマゾン ウェブ サービス ジャパンに入社、コミュニティプログラム担当として現在に至る。