Microsoft Igniteで様々な刺激的な発表がありましたが、特に注目されたのがCopilotでした。Copilotは、Microsoftが提供する人工知能を活用したプログラミング支援ツールや生産性向上ツールの総称であり、「GitHub Copilot」、「Copilot for Microsoft 365」、「Copilot in Fabric」等があります。今回紹介するのはデータの取得と変換(ETL)を担うData Factory(データフロー体験)となります。
Copilotの利用条件
Copilotは2023年11月末時点ではパブリックプレビューの状態ですが、こちらの公式記事により、利用するためにはPower BIでP1容量、もしくはFabricでF64容量が必要となります。
したがって、プレミアム環境を持たないPower BIのライセンスのみを利用しているユーザーは対象外であり、またFabricの無料試用版も対象外となります。さらに、条件を満たしていても、全ての顧客に一挙に展開することはできず、今後は段階的に展開される予定です。これにより、利用のハードルが急激に高まりましたが、環境が整っている場合には、以下のように非常に魅力的な機能を活用することができます。
Copilot for Dataflow Gen2
正式な名称は「Copilot for Data Factory」ですが、Dataflow Gen1(Power BIのみで使用可能なアイテム)は対象外となるため、「Copilot for Power Query」という表現は使えません。ここで混乱が生じやすいため、今回のデモではFabric環境でのDataflow体験において、Copilotを活用することが可能であることを覚えておくと良いでしょう。
早速ですが、デモ動画を観てみましょう。
CopilotはDataflow Gen2(Fabricのアイテム)の右側のペインから利用可能であり、日本語にも対応しています。レポート作成のCopilotは2023年12月時点、英語にしか対応していないことを考慮すると、データ処理の段階での日本語対応は非常に心強いと言えます。
詳細については動画をご覧いただくと理解しやすいですが、Copilotを使用すると様々なことが実現できます。命令文(プロンプト)が十分に明確であれば、多くの機能を活用して結果を得ることができるでしょう。Copilot for Data Factoryで開発に関わってきたCATの友人であるAlex Powersの言葉を借りれば、
必要なのはイマジネーション!
となるわけです。
機能する典型的な処理
ここでCopilotが良く機能する典型的な処理についてみてみます。
- 項目のフィルター(<=>等で)
- 並び替え(複数の条件も可)
- グループ化
- 列の追加
- 重複削除
- カウント
- 列名の変換
- 日付テーブルを作る
上記以外にも基本的なPower Query機能は動くでしょう。
苦手とする処理
まだ触り始めたばかりなので、何とも言えませんが、以下のようなものが挙げられます。
- 複雑な指示(当たり前と言えばそうですね)
- 列の展開
列を展開(Expand)する際に、どのような指示を入力すれば良いのか、全くわかりませんでした。列を指定しないと展開できないようですが、指定してもうまくいきませんでした。 - 作成した既存の複数クエリに対する処理
例えば、「(クエリ名を指定せず) 全てのクエリで列名を英語に変更して」と指示しても、Copilotは選択されたクエリのみを対象に処理します。同様に、「クエリAとクエリBの列名を英語に変更して」と具体的なクエリを指定しても、結果は同じようになります。 - 前の会話を記録してくれない
ChatGPTのように、プロンプトを出しても次のプロンプトに直接的な影響を与えず、毎回正確な指示が必要です(一定の影響はあるものの、ChatGPTほど連続性が高いわけではありません)。 - 置換作業は1つずつしか適用されない
例えば、[City]という列に「Tokyo」と「London」という2つのキーワードが含まれている場合でも、「Tokyoを東京に、Londonをロンドンに置換して」というプロンプトを与えた場合、Copilotは現時点では1つの置換しか行いません。
上記は私自身が試して発見したものですが、公式Docsの中にある「制限事項」にしっかり記載されていました。
サンプルクエリ
面白いと感じたのは、Power Queryがあらゆるテーマのサンプルクエリを提供してくれるところです。Copilotの魅力は遊び心も大切にしている点であり、例えば、次の例を見てみます。
ここで重要なことは、「サンプルクエリ」という言葉を入れることです。単に「最も売れた人気漫画トップ20を作って」とコマンドを投げても、上図の英語プロンプトに対する回答のように、クエリを生成してくれません(今後のアップデートで出てくるかもしれませんが、この記事を書いている時点では失敗)。
ちょっと変化球を投じてみましょう。今度は「日本語で作って」と入力してみましたが、同様の結果が得られました。ただし、先ほどの英語版を単に翻訳したものではないことに気付きます。ここで制限事項の一つとして「前の処理を覚えていない」ということが明らかになります。
もう少し膨らませてみます。プロンプトに「多くの列」という指示を入れたところ、より多くの情報が取得できるようになりました。
Copilotに関する質問は、ユーザーが使い続けることで様々な発見が可能になるでしょう。重要なのは、質問内容を『取得と変換に限定』することです。GPTsが登場したように、今後は様々な用途に特化した使い方が主流になるのではないかと考えられます。