テクテク日記

テクテク=テクノロジー&一歩ずつ(テクテク)

データフロー(Power Query Online)③_ショートカット

前回はデータフローの基礎及び簡単なデモを紹介しましたが、今回はそれをより使いやすくするためのTipsについて少し紹介したいと思います。前回もお話をしましたが、データフロー(Power Query Online)はモダンUIがベースとなっており、こちらはいずれPower BI DesktopのUIにも搭載されることになるため、Power Query Onlineを今のうちに使い慣れておけば、そうなった際の”ネガティブ・サプライズ”を避けることができるはずです。

まずは簡単なデモからスタートします。

Excelからデータフローへ

前回はPower BI DesktopからデータフローへクエリをコピペするだけでPower Query Onlineを使用できることを確認しました。Excelでやった場合、どうなるのでしょうか?Excel Power Queryにて、以下4つのクエリを作ります。

  • 列=英数字 | 内容=英数字
//全て英数字で作ったクエリ
let
    Source = 
        #table(
            type table[Row = Int64.Type, Item = text, Amount = Int64.Type],
            {
                {1, "A", 100},
                {2, "B", 200},
                {3, "C", 300},
                {4, "D", 400}
            }
        )
in
    Source
  • 列=日本語 | 内容=日本語
//全て日本で作ったクエリ
let
    Source = 
        #table(
            type table[行 = Int64.Type, アイテム = text, 金額 = Int64.Type],
            {
                {1, "りんご", 100},
                {2, "みかん", 200},
                {3, "バナナ", 300},
                {4, "スイカ", 400}
            }
        )
in
    Source
  • 列=英数字 | 内容=日本語
//列名は英数字、中身は日本語で作ったクエリ
let
    Source = 
        #table(
            type table[Row = Int64.Type, Item = text, Amount = Int64.Type],
            {
                {1, "りんご", 100},
                {2, "みかん", 200},
                {3, "バナナ", 300},
                {4, "スイカ", 400}
            }
        )
in
    Source
  • 列=日本語 | 内容=英数字
//列名は日本語、中身は英数字で作ったクエリ
let
    Source = 
        #table(
            type table[行 = Int64.Type, アイテム = text, 金額 = Int64.Type],
            {
                {1, "A", 100},
                {2, "B", 200},
                {3, "C", 300},
                {4, "D", 400}
            }
        )
in
    Source

これらのクエリの処理結果は以下の通りです。

これらのクエリを全てコピーして、Power Query Onlineに張り付けてみます。Power Query Onlineからは最初に空白のクエリを作りますが、最初のステップ(⑥まで)は前回をご参照。

そして、クエリを全て選択し、コピーし、Power Query Onlineに張り付けます。

結果は以下のようになりました。何が起こっているのか分かりにくいかもしれませんので、結論から言います。

  1. 2023年1月時点、Excel Power QueryからPower Query Onlineへクエリをコピぺすると、殆どの場合において文字化けが発生(ローカライズ問題)
  2. クエリ名が英数字以外の場合、全て文字化け(適用されたステップも同様)
  3. 列名が英数字以外の場合、Expression.Errorが出現し、クエリの結果が返らない
  4. 列名が英数字の場合、Expression.Errorは発生しない(クエリの結果が返る)
  5. クエリ名、列名、データの中身に関係なく、日本語が入っている場合、必ず文字化けする

一言で総括すると、Excel Power Queryから直接Power Query Onlineへ張り付けた場合、

英数字以外は文字化けが発生

するということです。


例外として、条件(クエリ名、列名、データの中身)が全て英数字だった場合、クエリは正しく返ります(下図)。

試しに同じクエリをPower BI Desktopから作り、Power BI DesktopからPower Query Onlineに張り付けてみます。

面白いことに、全てのクエリが正しく結果を返しました。中国語でも試してみましたがやはり無理で、どうやらExcelから直接Power Query Onlineへの張り付けは、英数字以外の言語は文字化けが発生するようです。この問題は既に開発チームへ報告済みであり、近い将来解決されることに期待したいところです。

Excelから直接Power Query Onlineへクエリを移行させる人はそれほど多くないと思いますが、もしニーズがある場合、

Excel ⇒ Power BI Desktop ⇒ Power Query Online

という流れでクエリのコピペを繰り返すとうまく行きます。ポイントは真ん中にPower BI Desktopを挟むことであり、これによって文字化けが発生することなく、Excelから(間接的に)Power Query Onlineにクエリのレプリカを作ることができます。

使い勝手の良いショートカット

Power Query Onlineにはいくつか便利なショートカットがあります。例えば、上記の文字化け問題で、以下2つのことをやりたい場合、ショートカットがいい感じに便利です。

  1. 詳細エディタの中身を見る
  2. 空のクエリを作って、Excelのlet..in..構文から張り付ける

まず1ですが、Power BI Desktopにはクエリを選択した状態で、Alt + W > Qをクリックすると、詳細エディタを立ち上げることが可能です。慣れれば何てことないですが、なかなか覚えるのがタフです。Power Query Onlineでは、このショートカットはCtrl + Shift + Mに変わり、かなり覚えやすくなりました。

ここでCtrl + Shift + Mをクリックして、「列=日本語 | 内容=日本語」のクエリを見ると、以下の通り、英数字以外の言語で文字化けを起こっています。

Power Query Onlineのクエリエディタ上でCtrl + Mを押します。すると、以下のように、空のクエリを入力するウィンドウが立ち上がります。こちらも覚えておくと便利なショートカットの1つです。

この状態でExcelでも同じく、Alt + W > Qの順にクリックして、詳細エディタを立ち上げ、中身をコピーして上記Power Query Onlineで作った「空のクエリ」のクエリウィンドに張り付ければ、今度は文字化けすることなく、「クエリ」という名前で結果が返ってきます。

検証の結果、詳細エディタの中に直接クエリをペーストするのは問題なさそうです。上記クエリはそのままにして、「保存して閉じる」をクリック。

ご覧の通り、Power Query Onlineでは、エラーが発生しているクエリについては保存できないように設定されている模様です。そのため、このままデータフローを保存することができず、文字化けを修正して正しくクエリの結果が返るようにしないといけません。

ここまでPower Query Onlineのショートカットとして、2つ使ってきましたが、他にもいくつかお勧めのものがあります。基本的にOffice製品(Excel等)を扱う際に使用するショートカットと同じ感覚として考えて頂ければOKです。

Power Query Onlineのショートカット

上記埋め込みレポート内がこれらのショートカットとなりますが、利用頻度でフィルターしてもらうと良いかもしれません。人によって異なりますが、特に使用頻度が高いであろうものは★★★としました。

なお、ショートカットの覚え方ですが、例えば私の覚え方は以下の通りです。

  • Ctrl + Aのように、Aを使用する場合、A = Allの略
  • Ctrl + Cのように、コピーを意味する場合、C = Copyの略
  • Alt + Qのように、検索を行う場合、Q = Questionの略
  • Ctrl + Alt + Cのように、カスタム列の追加の場合、C = Columnの略

このうち、下記2つについて、少し補足しておきます。

「カスタム列の追加」ショートカットについて

私だけの環境かもしれませんが、「カスタム列の追加」(Ctrl + Alt + C)は機能しない時があります。そのような場合、Alt + F5でクエリエディタの画面を更新してもう一度ショートカットを入れると機能するようになります。

「Alt + Q」の検索ショートカットについて

日本語版Power BI Desktopにない機能として、Alt + Qの検索機能があります。こちら、いつになったら搭載されるかは不明ですが、以下のようなことができますので、結構便利だと思います。

  • ディフォルトのAlt + Q
    検索やデータを取得することができます
  • Alt + Q > 半角スペースキーを押す > " "の結果を更に表示する
    上図の通り、グローバル検索を行うことが可能になります。クエリ処理に関するコマンドであったり、データの取得、更に(下図のように)様々なヘルプ情報へのアクセスも可能となります。

  • ショートカットキーのユースケース

    • インデックス列の追加
      Alt + Q > 「追加」をタイプ > 1からインデックス列を追加する
    • 希望するデータソースにつなぐ

      今のやり方以外にもCtrl + Alt + Dで「データソースの選択」ウィンドウを開くことができますが、いかんせんボタンを押しにくいのが残念。

まとめ

今回はデータフローのショートカットを中心に紹介しました。文字化けが発生するケースはショッキングですが、日本でもっとデータフローを積極的に活用していく場面が増えれば、より多くの機能修正に貢献できると期待できます。次回はデータフローに関するQ&Aについて、少し見ていきたいと思います。