0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Power Query】#sharedでワークブック内の全クエリを取得する

Posted at

はじめに

#sharedとは

#sharedは、Power Queryのワークブック内に存在するすべてのクエリ、パラメータ、関数を取得できる特殊な識別子です。通常は直接使用することは少ないですが、パラメータ一覧の作成やクエリの動的な参照など、高度な処理を実現する際に役立ちます。

この記事で分かること

  • Power Queryの基本構造とデータ型
  • #sharedの使い方と取得できる内容
  • パラメータ一覧テーブルの作成方法
  • 実用的な活用例

Power Queryの基本構造

クエリとは

クエリは、Power Queryにおけるデータ変換処理の単位です。データソースから取得したデータに対して、フィルタリング、結合、集計などの処理を定義します。

Power Query エディタの左側ペインに表示される各項目がクエリです。クエリは最終的にテーブル、値、リストなどのデータを返します。

パラメータとクエリの違い

パラメータは特殊なクエリの一種で、単一の値を保持します。

通常のクエリ

  • テーブルやリストなど、複数のデータを返す
  • データ変換の結果を格納

パラメータ

  • 単一の値のみを保持
  • 他のクエリから参照され、フィルタ条件や計算に使用される
  • M言語ではmeta [IsParameterQuery=true]で定義
// パラメータの例
#date(1999, 1, 1) meta [IsParameterQuery=true, Type="Date", IsParameterQueryRequired=true]

M言語の基本

Power QueryのクエリはM言語で記述されます。M言語は関数型プログラミング言語で、各ステップが前のステップの結果を受け取って処理を進めます。

基本的な構文は以下の通りです。

let
    ステップ1 = 処理内容,
    ステップ2 = ステップ1を使った処理,
    最終結果 = ステップ2を使った処理
in
    最終結果

データ型の理解

#sharedを理解するには、レコード型とテーブル型の違いを知っておく必要があります。

レコード型とは

レコード型は、名前と値のペアの集合です。他のプログラミング言語でいう辞書やオブジェクトに相当します。

[ 名前 = "田中", 年齢 = 30, 部署 = "営業" ]

レコード内の値にアクセスするには、レコード[フィールド名]またはレコード[名前]の形式を使います。

テーブル型とは

テーブル型は、行と列で構成されるデータ構造です。Power Queryで最も頻繁に扱うデータ型です。

各列には名前があり、各行は同じ構造のデータを持ちます。

Record.ToTableによる変換

Record.ToTable関数は、レコード型をテーブル型に変換します。変換後のテーブルは以下の2列構造になります。

  • Name列:レコードのフィールド名
  • Value列:そのフィールドの値

#sharedの使い方

基本的な使用方法

新しい空のクエリを作成し、以下のコードを入力します。

= #shared

これだけで、ワークブック内のすべてのクエリ、パラメータ、関数がレコード形式で取得されます。

取得できる内容

#sharedで取得できるのは以下の項目です。

  1. ユーザーが作成したクエリ:データテーブルを返すクエリ
  2. パラメータ:単一の値を持つクエリ
  3. カスタム関数:ユーザーが定義した関数
  4. Power Query標準の関数:Table.SelectRows、List.Sumなど

実際の出力例

#sharedをそのまま実行すると、レコード形式で表示されます。実用的にはRecord.ToTableでテーブルに変換すると見やすくなります。

let
    全項目 = Record.ToTable(#shared)
in
    全項目

実行結果のイメージ:

Name Value
param1 "AAA"
param2 1999/01/01
period Table
Table.SelectRows Function
... ...

注意点と制限事項

メタデータの取得について

#sharedでは、パラメータの値は取得できますが、メタデータ(Type、IsParameterQueryRequiredなど)を直接取得する方法は限られています。

パラメータの型や必須/任意の情報を一覧化したい場合は、手動でテーブルを作成する方が確実です。

パフォーマンスへの影響

#sharedは全項目を取得するため、大規模なワークブックでは処理に時間がかかる可能性があります。実用上は、必要な項目のみをフィルタリングして使用しましょう。

また、#sharedを使ったクエリは、他のクエリが更新されるたびに再評価される可能性があります。パラメータ一覧のように参照用途で使う場合は、更新頻度を考慮してください。

まとめ

#sharedは、Power Queryのワークブック内のすべてのクエリ、パラメータ、関数を取得できる便利な機能です。

主な用途

  • パラメータ一覧の自動作成
  • クエリの動的な参照
  • ワークブック構造の分析

活用のポイント

  • Record.ToTableでテーブルに変換すると扱いやすい
  • フィルタリングで必要な項目のみを抽出
  • メタデータは手動管理の方が確実

パラメータが多い場合や、レポート上でパラメータ設定を確認したい場合に、#sharedを活用してみてください。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?