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.

自己紹介


PowerBI コミュニティ勉強会の 沼口 です。
https://powerbi.connpass.com/
最近の Excel は Office 365 のクラウドサービスと 連携する方向性が打ち出されています。この「Road to Cloud Office」ブログでは、Excel ユーザーの視点から Power BI Service や、Office 365 の活用方法を模索した結果をお伝えしています。
Microsoft MVP for Data Platform 2017-2018