パラメーターを使用して動的レポートを作成する
動的レポートは、ユーザーの指定に応じて開発者がデータを変更できるレポートです。 動的レポートは、1 つのレポートを複数の目的で使用できるため、非常に便利です。 動的レポートを使用すると、作成しなければならない個別のレポート数が少なくなるため、組織の時間とリソースが節約されます。
レポートにデータを表示する値を決定することによって、パラメーターを使用できます。また、データをフィルター処理することによって、レポートが適宜更新されます。
動的レポートを作成することによって、レポートに表示されるデータに対してユーザーが行える幅が広がります。たとえば、データ ソースを変更したり、データをフィルター処理したりすることができるようになります。
次の例では、SQL Server データベースの売上データを表示する Tailwind Traders の営業チームのレポートを作成してきました。 このレポートでは、営業チームの業績について全体像をつかむことができます。 レポートは便利ですが、営業チームのメンバーはさらにレポートをフィルター処理できるようにしたいと考えています。そうすることで、自分のデータのみを表示し、売上目標に対する自分の業績だけを追跡できるようになります。
個々の値に対する動的レポートの作成
動的レポートを作成するには、最初に SQL クエリを記述する必要があります。 次に、Power BI Desktop の [データを取得] 機能を使用して、データベースに接続します。
この例では、以下の手順を実行して SQL Server のデータベースに接続します。
サーバーの詳細を入力した後、[SQL Server データベース] ウィンドウで [詳細オプション] を選択します。
SQL クエリを [SQL ステートメント] ボックスに貼り付けて、[OK] を選択します。
接続されると、プレビュー ウィンドウにデータが表示されます。
Power Query エディターでデータを開くには [編集] を選択します。
次に、以下の手順を実行してパラメーターを作成します。
[ホーム] タブで、[パラメーターの管理] > [新しいパラメーター] を選択します。
[パラメーター] ウィンドウで、既定のパラメーター名をよりわかりやすい名前に変更し、その目的を明確にします。 この場合は、名前を「SalesPerson」に変更します。
[種類] の一覧から [テキスト] を選択し、[提案された値] の一覧から [任意の値] を選択します。
[OK] を選択します。
作成したパラメーターの新しいクエリが表示されます。
次に、新しいパラメーターを評価するために SQL クエリのコードを調整する必要があります。
[Query1] を右クリックし、[詳細エディター] を選択します。
次の図に示すように、実行ステートメントの既存の値を、アンパサンド (&) の後にパラメーター名 (SalesPerson) を加えたもので置き換えます。
ウィンドウの下部にエラーが表示されていないことを確認し、[完了] を選択します。
画面上では違いがわかりませんが、Power BI によってクエリが実行されます。
クエリが実行されたことを確認するには、パラメーター クエリを選択し、[現在の値] ボックスに新しい値を入力して、テストを実行します。
クエリの横に警告アイコンが表示されることがあります。 その場合は、そのクエリを選択します。そうすると、このネイティブのデータベース クエリを実行するにはアクセス許可が必要であることを示す警告メッセージが表示されます。 [アクセス許可の編集] を選択し、[実行] を選択します。
クエリが正常に実行されると、パラメーターによって新しい値が表示されます。
[Close and Apply] (閉じて適用する) を選択し、レポート エディターに戻ります。
これで、パラメーターをレポートに適用できるようになりました。
[クエリの編集] > [パラメーターの編集] を選択します。
[パラメーターの編集] ウィンドウで、新しい値を入力して、[OK] を選択します。
[変更の適用] を選択した後、ネイティブ クエリをもう一度実行します。
これで、データを表示すると、パラメーターを通じて渡された新しい値のデータが表示されます。
一度に 1 つの特定の値のデータを表示するレポートを作成できるようになりました。 複数の値のデータを同時に表示するには、さらに多くの手順が必要です。
複数の値に対する動的レポートの作成
一度に複数の値に対応するには、値のリストを含む 1 列で構成されるテーブルが存在する Microsoft Excel ワークシートを、最初に作成する必要があります。
次に、Power BI Desktop の [データを取得] 機能を使用して、その Excel ワークシートのデータに接続してから、以下の手順のようにします。
[ナビゲーター] ウィンドウで、[編集] を選択して Power Query エディターでデータを開きます。ここには、データ テーブルの新しいクエリが表示されます。
テーブルの列の名前を、よりわかりやすい名前に変更します。
列のデータ型を [テキスト] に変更してパラメーターの型と一致させ、データ変換の問題が起きないようにします。
クエリの [プロパティ] セクションで、データ ソースの名前をもっとわかりやすいものに変更します。 この例では、「SalesPersonID」と入力します。
次に、新しい SalesPersonID クエリを Query1 に渡す関数を作成する必要があります。
Query1 を右クリックし、[関数の作成] を選択します。
関数の名前を入力し、[OK] を選択します。
[クエリ] ペインに新しい関数が表示されます。
ユーザーが混乱する可能性があるので、レポートのフィールドの一覧に Query1 が表示されないようにするため、Query1 を再度右クリックし、[読み込みを有効にする] (既定ではオン) を選択して、機能を無効にします。
Excel ワークシートから読み込んだ SalesPersonID クエリを選択し、[列の追加] タブで [カスタム関数の呼び出し] を選択して、作成したカスタム関数を実行します。
[カスタム関数の呼び出し] ウィンドウで、[関数クエリ] の一覧から関数を選択します。
[新しい列名] が自動的に更新され、パラメーターを通じて渡す値を含むテーブルが既定で選択されています。
[OK] を選択し、必要に応じてネイティブ クエリを実行します。
GetSalesFromSalesPerson 関数の新しい列が、SalesPersonID 列の横に表示されます。
新しい列ヘッダーの 2 つの矢印アイコンを選択し、読み込む列のチェック ボックスをオンにします。 このセクションでは、各値 (販売担当者 ID) についてレポートで使用できる詳細情報を決定します。
レポート内の列名にはプレフィックスを表示する必要がないため、画面の下部にある [元の列名をプレフィックスとして使用します] チェック ボックスをオフにします。
[OK] を選択します。
各値 (販売担当者 ID) ごとに、選択した列のデータを表示できるはずです。
必要に応じて、Excel ワークシートの SalesPersonID 列に値 (販売担当者 ID) を追加したり、既存の値を変更したりできます。
変更を保存し、Power Query エディターに戻ります。
[ホーム] タブで [プレビューを最新の情報に更新] を選択し、ネイティブ クエリを再度実行します (必要な場合)。 ワークシートに追加した新しい販売担当者 ID の売上が表示されます。
[閉じて適用] を選択してレポート エディターに戻ると、[フィールド] ペインに新しい列名が表示されています。
これで、レポートの作成を始めることができます。