行と列の入替えのカギはピボット解除?PowerBIの操作手順をChatGPTに聞いたら上手くいった話

目次

はじめに

今回は、社内で実際に依頼されたPowerBIの課題を、ChatGPTの利用により解決した、という小話です。

経緯

ある日、以下のようなメッセージがTeamsで飛んできました。

お疲れ様です。
PowerBIのことで教えて欲しくて、スペシャリストの茶碗蒸しさんにチャットしました。
添付のファイルなんですが、「元データ」シートのようなデータがあります。
PowerBIのテーブルで「変換したいデータ」シートのようなテーブルを作りたいのですが、どうやって作ったら良いのか分からず。
ご教授の程、よろしくお願いします。

【添付】教えてサンプル.xlsx

  • 自分は「PowerBI完全に理解した~何もわからない」の間くらいなのでスペシャリストではないですが…
茶碗蒸し

お疲れ様です!
知ってる方法で変換後が実現できないか、ちょっと試してみたいです。
少々お時間いただきます。

  • こんなことを言ってますが、10分程試行錯誤して、知ってる方法じゃ太刀打ちできませんでした。まだまだ知らないことがいっぱいありますね…

ちなみにデータの内容はこちらです↓(変換前と変換後の例を載せてくれたのはありがたかったです)

図 変換前のデータ
図 変換後のデータ

頂いたデータの変換のポイントとしては、以下のような感じかと思います。

  • 1行に項目、年度、各月の値が入っている表を、「項目」「日付(年月)」「値」に直す。(部分的な行と列の入替え?)
  • 日付は年度と月を1つにまとめる。

おそらくつよつよデータサイエンティストの皆様は、ここで変換方法を思いつくのだろうなと思っていますが、自分は似非データサイエンティスト()ですので、皆目見当もつかない状態でした。

  • Google検索しようにも、そもそもどういったキーワードで検索すれば良い方法にたどり着けるのか不明でした。

ChatGPTに相談してみた

ここであることを思いつきます。

茶碗蒸し

ChatGPTに聞けば何か糸口が見つかるかも…?

いまどきの人間の考えですね。

現在弊社には、Teamsボットとして昨年くらいに自分が作成した、その名もhkrChatGPT(hkr=HoKuRyo[北菱]の頭文字)という、AzureOpenAIベースのチャットボットがいます。

ダメもとで相談してみました。

【変換前】の表をPowerBIで【変換後】の形式にする際の操作を教えてください。
---
【変換前】
<ここにExcelからコピーした表を貼り付け>

【変換後】
<ここにExcelからコピーした表を貼り付け>
図 hkrChatGPTに聞いてみた
図 hkrChatGPTからの返答

おお…?!ピボット解除という操作でいけるのか…?
この方法で、果たしてできるのでしょうか。

ピボット解除とは

データのピボット解除 (データのフラット化とも呼ばれます) を解除して、同様のすべての値が 1 つの列になるようにマトリックス形式で配置することができます。 これは、たとえば、グラフやレポートを作成するために必要です。

引用元:Microsoftサポート(https://support.microsoft.com/ja-jp/office/%E3%83%94%E3%83%9C%E3%83%83%E3%83%88%E8%A7%A3%E9%99%A4%E5%88%97-power-query-0f7bad4b-9ea1-49c1-9d95-f588221c7098), 2024/09/18 閲覧

依頼された手前、できるかどうか自分がわかっていないものをそのまま返すのは忍びなかったので、実際に試してみることにしました。

ChatGPTに従ってみた

結論から言えば、できました
具体的には、以下の手順で瞬殺でした。PowerQueryの操作になります。

STEP
データの取り込み

Excelを読み込み、1行目をヘッダーとして使用します。

STEP
ピボット解除

12月~1月までをShiftキーで選択し、右クリック→「列のピボット解除」をクリックします。

STEP
カスタム列「日付」の追加

年度と属性をShiftキーで選択し、「列の追加」タブの「例からの列」→「選択範囲から」をクリックします。カスタム列に「202312」 「202301」と入力し、エンターキーで自動でクエリ作成を行います。(PowerQueryも賢いですね)

STEP
完成

不要な列を削除し、列の入替を行い、列名を変更すると完成です。

100点満点の回答は期待しない方が良い

ここまで従っておいてなんですが、1点だけそのままではできなかった部分があります。
hkrChatGPTの回答番号の7番目

この方法を試すと、

  • 年度が数値型、日付がテキスト型なので、そもそも結合できずErrorになる。
  • 年度をテキスト型にして&で結合すると「202312月」みたいになり、「月」が邪魔になる。

ということになります。

ですので、ここはstep3のように例から列を作成した方が無難ではないかと思います。

おわりに

あのようなプロンプトでも、十分に使える回答を頂けました。特に「ピボット解除」の知識を得られたのは大きいです。(PowerBIerにとっては「それは当たり前に使う」と言われそうではありますが)
これからも「PowerBIなにもわからない」に向け、精進していこうと思います。

【その後

今回の依頼者には、hkrChatGPTをおススメしておきました。
この方もつよつよエンジニアなので、きっと上手く活用してくれるでしょう…

  • URLをコピーしました!

この記事を書いた人

普段はAI・データ分析に関する業務を行なっています。
MELSOFT MaiLab、AzureOpenAIService、Azure、PowerBI 他

目次