2016/07/07

[Power Query / 取得と変換] 列の追加 - 条件列 が利用可能になりました

Power BI Desktop や Excel の Office Insider で利用可能だった [列の追加] の [条件列] が、たぶん5月のOffice 更新プログラムで一般にも公開されたようです。
それまで、あると思って開いたら無くて「あ・・・あれ?」となったことが多かったからです。


ちょっと前置きが長くなりますが、この条件列が追加されたことで、かなり使いやすくなりました。

この Power Query / 取得と変換のクエリエディタで Power Query Formula Language (M言語) をガンガン使ってクエリを書く、という使い方をマイクロソフトは想定して作っていないような気が前々からしています。

というのも、Excelの数式バーでいうところの「数式オートコンプリート」機能、または、Visual Studio でいうところの「インテリセンス」のような、入力補助機能がクエリエディタで提供されていません。

数式オートコンプリートによるドロップダウン リスト

入力補助はなく、エラーではじめて間違いがわかる

ちなみに、Excel の数式バーと、Power Query の数式バー(これも正式名称が数式バー)の左横にある [fx] ボタンは、Excel の場合は[関数の挿入ボタン]ですが、Power Queryの場合は[ステップの挿入ボタン]です。挿入するという意味では一緒ですが、かなり違う意味・使い方になるので、迷わない、使い方が期待通りにならないので、なんで?なんで?と思わないことが肝要です。(要は Power Query のほうはほとんど使えない)

そのため、素から数式を記述するというよりは、リボンから適切なコマンドを選択して、クエリを完成させる、というのが基本哲学のようなものかなぁ、と感じていました。

たとえば、[列の追加]タブには、テキスト、数値、日付を元にして新しい列を追加するなら「たぶん、これをやるでしょ?」というコマンドが用意されています。

参照元のデータがテキストで、カスタム列を追加して、MID関数のような処理をしたい、となると、参照元のデータの列を選択した状態で、[テキストから] - [抽出] - [範囲] でMID関数と同様のことが可能です。

開始と文字数を指定 ただし、開始インデックスは 0 から始まる・・・

もちろん、その操作結果は M言語で記述されています。VBAのマクロ記録、といったほうがイメージしやすいでしょう。

MID関数に相当する Text.Middle 関数が使われていることがわかる

ここでカスタム列を追加した場合に欲しかったのが「条件の指定」でした。IFを使った条件分岐ですね。


If Then Else If Then Else If ・・・ なのでネストのし過ぎには要注意ですが、それ以上に演算したい [演算子] を、データの型にあわせて利用可能なものがドロップダウン リストで表示されるのは、上述のように数式オートコンプリートがないクエリエディタにはありがたいです。

たとえば [指定した値から始まる・・・] のような場合は、ドロップダウン リストから演算を選べば、相当する関数 (Text.StartsWith()) を使った記述が記録されます。


これらの追加機能を使い、M言語を直接記述するのではなく、マクロ記録のようにやりたい処理を手で行い、クエリを保存する、という流れをメインにするのではないかと思われます。

Officeのアップデートがまだの方は、ぜひ。

0 コメント:

コメントを投稿

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を返上し、アマゾン ウェブ サービス ジャパンに入社、コミュニティプログラム担当として現在に至る。