リレーショナル データ ソースからデータを取得する
あなたの組織が販売にリレーショナル データベースを使用している場合は、エクスポートされたフラット ファイルを使用する代わりに、Power BI Desktop を使用してデータベースに直接接続できます。
Power BI をデータベースに接続すると、ビジネスの進捗を監視し、傾向を特定できるため、売上高の予測、予算の計画、業績評価指標と目標の設定が可能になります。 Power BI Desktop では、クラウドまたはオンプレミスにある多くのリレーショナル データベースに接続できます。
シナリオ
Tailwind Traders の販売チームから、組織のオンプレミス SQL Server データベースに接続し、売上データを Power BI Desktop に取り込んで、販売レポートを作成できるようにすることが求められました。
リレーショナル データベースのデータに接続する
Power BI Desktop の [データを取得] 機能を使って、リレーショナル データベースに適したオプションを選択できます。 この例では、次のスクリーンショットに示すように、[SQL Server] オプションを選択します。
ヒント
[データを取得] ボタンの横に、SQL Server などのクイック アクセス データ ソース オプションがあります。
次の手順では、[SQL Server データベース] ウィンドウにデータベース サーバー名とデータベース名を入力します。 データ接続モードの 2 つのオプションは次のとおりです。インポート (既定で選択、推奨) と DirectQuery。 ほとんどの場合、インポートを選択します。その他の詳細オプションも [SQL Server データベース] ウィンドウでは使用できますが、ここでは無視してかまいません。
サーバー名とデータベース名を追加すると、ユーザー名とパスワードを使用してサインインするように求められます。 3 つのサインイン オプションがあります。
Windows - Windows アカウント (Azure Active Directory 資格情報) を使用します。
データベース - データベース資格情報を使用します。 たとえば、SQL Server に、時々使用される独自のサインインおよび認証システムがあるとします。 データベース管理者から、データベースへの一意のサインインが許可されている場合は、[データベース] タブでその資格情報の入力が必要になることがあります。
Microsoft アカウント - Microsoft アカウント資格情報を使用します。 このオプションは、多くの場合、Azure サービスに使用します。
サインイン オプションを選択し、ユーザー名とパスワードを入力して、[接続] を選択します。
インポートするデータを選択する
データベースが Power BI Desktop に接続されると、[ナビゲーター] ウィンドウに、データ ソース (この例では SQL データベース) で使用できるデータが表示されます。 テーブルまたはエンティティを選択して、その内容をプレビューし、Power BI モデルに正しいデータが読み込まれることを確認できます。
Power BI Desktop に取り込むテーブルのチェック ボックスをオンにし、[読み込み] または [データの変換] オプションを選択します。
読み込み - Power BI モデルにデータが現在の状態で自動的に読み込まれます。
データの変換 - Microsoft Power Query でデータを開きます。ここでは、不要な行や列の削除、データのグループ化、エラーの削除、その他の多くのデータ品質タスクなどのアクションを実行できます。
SQL クエリを記述してデータをインポートする
データをインポートできる別の方法は、SQL クエリを記述して、必要なテーブルと列だけを指定することです。
SQL クエリを記述するには、[SQL Server データベース] ウィンドウで、サーバー名とデータベース名を入力した後、[詳細オプション] の横にある矢印を選択してこのセクションを展開し、オプションを表示します。 [SQL ステートメント] ボックスで、クエリのステートメントを記述し、[OK] を選択します。 この例では、Select SQL ステートメントを使用して、SALES テーブルから ID、NAME、SALESAMOUNT の各列を読み込みます。
データ ソース設定を変更する
データ ソース接続を作成し、Power BI Desktop にデータを読み込んだ後は、いつでも接続設定に戻って変更できます。 このアクションは、多くの場合、組織内のセキュリティ ポリシーのために、パスワードを 90 日おきに更新する必要がある場合などに必要になります。 データ ソースを変更、アクセス許可を編集、またはアクセス許可をクリアすることができます。
[ホーム] タブで、[データの変換] を選択し、[データ ソース設定] オプションを選択します。
表示されるデータ ソースの一覧から、更新するデータ ソースを選択します。 次に、そのデータ ソースを右クリックして使用可能な更新オプションを表示するか、またはウィンドウの左下にある更新オプション ボタンを使用できます。 必要な更新オプションを選択し、必要に応じて設定を変更してから、変更を適用します。
また、Power Query 内からデータ ソースの設定を変更することもできます。 テーブルを選択してから、[ホーム] リボンの [データ ソース設定] オプションを選択します。 または、画面の右側の [クエリ設定] パネルにアクセスして、[ソース] の横にある設定アイコンを選択します (または、[ソースの選択] をダブルクリックします)。 表示されるウィンドウでサーバーとデータベースの詳細を更新し、[OK] を選択します。
変更を行ったら、[閉じて適用] を選択し、それらの変更をデータ ソース設定に適用します。
SQL ステートメントを記述する
前に説明したように、SQL クエリを使用して、Power BI モデルにデータをインポートできます。 SQL は、Structured Query Language (構造化照会言語) を表し、リレーショナル データベースを管理して、さまざまなデータ管理操作を実行するために使用する標準化されたプログラミング言語です。
データベースに数年間の売上データから構成される大きなテーブルがあるシナリオを考えてみます。 2009 年の売上データは、作成するレポートに関係ありません。 この状況では、SQL が役立ちます。SQL ステートメントで正確な列と行を指定して、それらをセマンティック モデルにインポートすることによって、必要なデータのセットだけを読み込むことができるためです。 さらに、SQL クエリで、さまざまなテーブルの結合、特定の計算の実行、論理ステートメントの作成、データのフィルター処理を行うこともできます。
次の例では、SALES テーブルから、ID、NAME、および SALESAMOUNT が選択されるシンプルなクエリを示しています。
SQL クエリは、Select ステートメントで始まり、これによって、データベースからプルする特定のフィールドを選択できます。 この例では、ID、NAME、および SALESAMOUNT 列を読み込む必要があります。
SELECT
ID
, NAME
, SALESAMOUNT
FROM
FROM は、データをプルするテーブルの名前を指定します。 この例では、SALES テーブルです。 次の例は、完全な SQL クエリです。
SELECT
ID
, NAME
, SALESAMOUNT
FROM
SALES
SQL クエリを使用してデータをインポートする場合、クエリでワイルドカード文字 (*) を使用しないようにしてください。 SELECT ステートメントでワイルドカード文字 (*) を使用すると、指定したテーブルから必要のないすべての列をインポートします。
次の例では、ワイルドカード文字を使用したクエリを示します。
SELECT *
FROM
SALES
ワイルドカード文字 (*) によって、Sales テーブル内のすべての列をインポートします。 この方法は推奨されません。セマンティック モデル内に冗長データが発生することで、パフォーマンスの問題を引き起こし、レポート用にデータを正規化するための追加の手順が必要になるためです。
すべてのクエリには、WHERE 句も含める必要があります。 この句により、必要なフィルター処理済みのレコードだけを取得するように行をフィルター処理します。 この例で、2020 年 1 月 1 日以降の最新の売上データを取得する場合は、WHERE 句を追加します。 進化したクエリは次の例のようになります。
SELECT
ID
, NAME
, SALESAMOUNT
FROM
SALES
WHERE
OrderDate >= ‘1/1/2020’
Power BI では、これを直接実行することは推奨されません。 代わりに、ビューに次のようなクエリを記述することを検討してください。 ビューは、テーブルに似た、リレーショナル データベース内のオブジェクトです。 ビューには行と列があり、SQL 言語のほぼすべての演算子を含めることができます。 Power BI でビューを使用すると、データの取得時に、Power Query の機能であるクエリ フォールディングにつながります。 クエリ フォールディングについては後で説明しますが、後でデータが使用される方法に従い、Power Query によってデータ取得が最適化されます。