Amazon Web Services ブログ

Power BI と Amazon Redshift を統合して洞察を取得し分析する

Amazon Redshift は高速なフルマネージド型クラウドネイティブデータウェアハウスで、標準 SQL や既存のビジネスインテリジェンス (BI) ツールを使用して、すべてのデータをシンプルかつコスト効率よく分析できます。Microsoft Power BI は、洞察を得て、情報に基づいた迅速な意思決定を行うことを可能にするビジネス分析サービスです。Power BI により、アドホッククエリ分析を実行し、データを視覚化し、使いやすいダッシュボードを作成できます。

この記事では、Power BI を Amazon Redshift と統合して、強力に視覚化し洞察をもたらす方法を示します。

ソリューションのアーキテクチャ

この記事では、AWS でゼロからビッグデータ環境を作成するのに役立つコードアーティファクトを提供します。提供される AWS CloudFormation テンプレートとコード例を使用することで、技術的な詳細をあまり知らずに、1 時間とかからずに新しい Amazon Redshift データウェアハウスを自動的にプロビジョニングできます。

この記事では、最も一般的なデプロイシナリオの統合を設定する方法も示します。たとえば、ODBC/JDBC ドライバーを使用して Power BI を AWS のサービスにどのように接続したらよいでしょうか? プライベートネットワークの背後にデプロイされている AWS のサービスにどのように接続したらよいでしょうか? AWS のサービスへの接続に使用する資格情報は何でしょうか? この記事の以下のセクションで、これらの疑問に対処し、答えていきます。

次の図は、AWS にデプロイされたソリューションアーキテクチャを示しています。AWS クラウド境界内のすべてのコンポーネントは、AWS CloudFormation テンプレートで自動的にデプロイされるため、AWS アカウントを使用してこのソリューションを迅速に再現できます。

デプロイされると、ソリューションには次のコンポーネントが含まれます。

  • VPC、パブリックサブネットとプライベートサブネット、セキュリティグループ、インターネットゲートウェイ、NAT ゲートウェイ、およびルートテーブルを含むネットワークインフラストラクチャ
  • サンプルデータを生成するためにパブリックサブネットにプロビジョニングされた Linux EC2 インスタンス
  • Power BI Desktop をホストする Windows Server EC2 インスタンス
  • Power BI と Amazon Redshift 間の通信を処理するオンプレミスデータゲートウェイとして機能する Windows Server EC2 インスタンス
  • プライベートサブネットにデプロイされた Amazon Redshift クラスター
  • Amazon S3 と Amazon Redshift にアクセスする権限を持つ IAM ユーザーとロール

前提条件

この記事の手順を実行するには、次の前提条件が必要です。

  • AWS アカウント – 指示に従い、最小限のコストでテストするにはアカウントが必要です。
    • アカウントを初めて作成する場合は、[us-east-1] リージョンを選択します。
    • 選択したリージョンのキーペアを作成します 。詳細については、「Amazon EC2 キーペア」を参照してください。
  • Power BI テナント – 以下により、記載されているすべての Power BI 機能を最小限の料金~無料でテストできます。
    • Power BI Pro ライセンス
    • Power BI 管理者ポータルへのアクセス

開発環境の作成と設定

AWS で Power BI 視覚化を作成する前に、完全に機能する開発環境にサンプルデータを読み込む必要があります。このセクションでは、その環境を最初から作成および設定する手順についても説明します。このセクションのすべてのデプロイ手順を実行すると、AWS と Power BI 間のすべての統合フックが完全に設定された AWS インフラストラクチャが完成します。

この環境を作成するには、次の高レベルのタスクを実行します。

  1. AWS CloudFormation テンプレートを実行して、初期開発環境をプロビジョニングします。
  2. Amazon EC2 Linux インスタンスに SSH で接続して、サンプルデータセットを生成します。
  3. データを作成して Amazon Redshift テーブルにロードすることにより、データウェアハウスを設定します。
  4. Power BI Desktop をインストールして設定します。
  5. Power BI でデータゲートウェイを設定します。
  6. Power BI モバイルアプリをインストールして、携帯電話からビジュアルを消費できるようにします。

デプロイを迅速かつ簡単にするために、この記事では AWS CloudFormation テンプレートを使用してデプロイ手順の大部分を自動化します。自動化できなかったタスクについては、この記事では実際のコード例とともに詳細な説明を行っています。テンプレートと関連コードは GitHub リポジトリにあります。この GitHub リポジトリをローカル作業フォルダにクローンすることを忘れないでください。このセクションのデプロイ手順を進めるときにこのアーティファクトを参照する必要があるためです。

開発環境のプロビジョニング

このステップでは、AWS CloudFormation テンプレートを実行して、初期インフラストラクチャをプロビジョニングします。次の手順を実行します。

  1. AWS CloudFormation コンソールの Region で、[US East (N. Virginia)] を選択します。他のリージョンを選択することもできますが、選択したリージョンに一致するように AWS CloudFormation テンプレートパラメータの EC2 AMI ID を変更する必要があります。
  2. [Create stack] を選択します。
  3. Specify template で、[Upload a template file] を選択します。
  4. [Choose file] をクリックします。
  5. 作業フォルダから ProvisionDevEnv.yaml ファイルを選択します。
  6. [Next] を選択します。
  7. Specify stack details で、次の情報を指定します。
    • Stack name – CloudFormation スタックの名前を入力します。
    • AmazonLinuxImageID – 米国東部 (バージニア北部) で実行している場合は、デフォルト値を使用します。それ以外の場合は、選択したリージョンの Amazon Linux AMI ID を指定します。AMI ID を簡単に見つけるには、Amazon EC2 コンソールに移動して新しいインスタンスを起動します。Amazon Linux AMI ID が最初のページに一覧表示されているはずです。Amazon Linux 2 ではなく、Amazon Linux を使用します。
    • EC2KeyPair – リージョンのキーペアの名前を入力します。
    • MyIPAddress – パブリック IP アドレスを CIDR 形式で入力します (例:205.251.192.0/32)。パブリック IP アドレスを見つけるには、オンラインで what is my ip address を検索します。
    • RedshiftMasterUserPassword – Amazon Redshift クラスターのパスワードを入力します。
    • RedshiftMasterUsername – デフォルトのユーザー名を使用するか、独自のユーザー名を指定します。
    • WindowsServerImageID – 米国東部 (バージニア北部) で実行している場合は、デフォルト値を使用します。それ以外の場合は、ご利用のリージョンの Microsoft Windows Server 2019 Base AMI ID を指定します。
    • 他のすべてのオプションについては、デフォルト値のままにします。
  1. [Next] を選択します。
  2. Configure stack options ページで、[Next] を選択します。
  3. Review ページで、[I acknowledge…] チェックボックスをオンにします。
  4. [Create stack] を選択します。

CloudFormation スタックの作成が完了するまで待ちます。これには約 10 分かかります。CloudFormation スタックが完了したら、[Stack Outputs] を選択します。このセクションでは、デプロイプロセスの後半で参照する必要があるリソースのキーと値をすべて見つけることができます。

サンプルデータセットの生成

初期インフラストラクチャのプロビジョニングが完了したので、Power BI ビジュアライゼーションで使用するサンプルデータを生成しましょう。サンプルデータセットの生成方法の詳細については、作業フォルダ内にある GenerateSampleDataset.txt を参照してください。

このファイルのプレースホルダーを、AWS CloudFormation Stack Outputs セクションの対応する次の値に置き換えます。

  • [KeyPairFileName]EC2KeyPair テンプレート入力パラメータの値に置き換えます
  • [EC2IPAddress] – この EC2 インスタンスのパブリック IP アドレスをキー DataGeneratorPublicIP に置き換えます
  • [S3BucketName] – 実際の S3 バケット名に置き換えます

データセットを生成して S3 バケットにコピーしたら、Data Generator という名前で EC2 インスタンスを終了します。EC2 インスタンスはもう必要ありません。

Amazon Redshift クラスターの設定

このステップでは、一連の SQL コマンドを実行して、Amazon Redshift クラスターにテーブルを作成します。その後、以前に生成したデータを Amazon S3 から Amazon Redshift テーブルにロードします。次の手順を実行します。

  1. Amazon Redshift コンソールで、[Query Editor] を選択します。
  2. CloudFormation スタックへの入力パラメータとして指定されたデータベース名、データベースユーザー、およびパスワードを指定して、クラスターに接続します。
  3. スキーマのドロップダウンメニューから、[public] を選択します。
  4. 作業フォルダで CreateRedshiftTables.txt ファイルを開き、クエリエディタで各 SQL ステートメントを 1 つずつ実行します。
  5. ファイル CopyFromS3ToRedshift.txt で COPY コマンドを 1 つずつ実行して、作成したテーブルにサンプルデータをロードします。次のプレースホルダーを AWS CloudFormation Stack Outputs セクションの実際の値に置き換えます
    • [S3BucketName] – 実際の S3 バケット名に置き換えます。
    • [RedshiftAccessRoleName] – IAM ロール名に置き換えます。
  6. 次のテーブルがパブリックスキーマの下にリストされていることを確認します。各テーブルで select count(*) を実行して、次のテーブルの行数を確認します。
    • 顧客: 1,500,000
    • lineitem: 59,986,052
    • : 25
    • 注文: 15,000,000
    • パーツ: 2,000,000
    • partsupp: 8,000,000
    • リージョン: 5
    • サプライヤー: 100,000

Power BI Desktop のインストールと設定

このステップでは、リモートデスクトッププロトコル (RDP) を使用して Windows Server ジャンプボックスに接続し、Power BI Desktop をインストールします。PowerBI Desktop は、後で Amazon Redshift から取得したデータから視覚化データを作成するために使用します。詳細については、「Windows インスタンスへの接続」を参照してください。次の手順を実行します。

  • ローカルマシンの RDP から Windows Server ジャンプボックスへ移動します。ジャンプボックスのパブリック IP アドレスは、CloudFormation スタック出力タブまたは EC2 コンソールから取得できます。
  • CloudFormation テンプレートで指定した EC2KeyPair を使用して、EC2 コンソールにより管理者パスワードを復号化することを忘れないでください。
    • Amazon EC2 コンソールを開き、[Instances] を選択します。
    • 選んだインスタンスを選択し、[Actions] をクリックしてから、[Get Windows Password] を選択します。
      : 新しいインスタンスを最初に起動した後、このオプションが利用できるようになるまで数分かかる場合があります。
    • [Choose File] をクリックし、キーペアファイルを選択して、[Open] を選択します。または、キーペアの内容をテキストボックスに貼り付けることもできます。
    • [Decrypt Password] を選択します。
  • ジャンプボックスにログインした後に最初に行うことは、Enhanced Security Configuration をオフにすることです。オフにしないと、後で Power BI サービスにログインするときに問題が発生します。
    • ジャンプボックス内で、[Start] > [Server Manager] > [Local Server] に移動します。
    • IE Enhanced Security Configuration の右側にある [On] リンクをクリックします
    • Administration セクションの下の [Off] をクリックし、[OK] をクリックします
  • Power BI Desktop 64-bit をダウンロードして、ジャンプボックスにインストールします。ダウンロードするのは、64 ビットバージョンの Power BI Desktop である PBIDesktopSetup_x64.exe です。  実行可能ファイルをダウンロードしたら、実行して Power BI Desktop をインストールします。  すべてのデフォルト設定を受け入れます。

Microsoft オンプレミスデータゲートウェイのインストールと設定

このステップでは、Microsoft オンプレミスデータゲートウェイをインストールし、プライベートサブネット内にデプロイした Amazon Redshift クラスターなど、パブリックインターネットからアクセスできないデータストアと Power BI が通信できるようにします。データゲートウェイインスタンスに Microsoft オンプレミスデータゲートウェイをインストールします。次のテストは最小限の料金または無料で実行できます。次の手順を実行します。

  • Windows Server Jump Box から、EC2 コンソールから取得できるプライベート IP アドレスを使用してデータゲートウェイに RDP 接続します。
  • 前の手順で説明したのと同じ手順に従って、EC2KeyPair を使用してデータゲートウェイの管理者パスワードを復号化します。
  • IE セキュリティ強化設定を無効にします。
    • データゲートウェイ内で、[Start] > [Server Manager] > [Local Server] の順に移動します。
    • IE Enhanced Security Configuration の右側にある [On] リンクをクリックします
    • Administration セクションの [Off] をクリックします
    • [OK] をクリックします
  • Microsoft On-premise Data Gateway をダウンロードしてインストールします
    • 必要なゲートウェイの種類を選択する画面で、[On-premises data gateway (recommended)] を選択します
    • デフォルト値を受け入れて、[Install] をクリックします
    • インストーラーからサインインを求められたら、Power BI Pro テナントの管理者アカウントに関連付けられている E メールアドレスを入力します。
    • [Sign in] をクリックします
    • サインイン後、ゲートウェイを登録するように求められます。新しいゲートウェイを登録するか、既存のゲートウェイを移行、復元、または引き継ぐように求められた場合は、[Register a new gateway] を選択します。
    • ゲートウェイに名前を付け、リカバリキーを提供します
    • [Configure] をクリックします
    • ゲートウェイがオンラインで、使用できる状態であることを示す緑色のチェックマークが表示されているはずです。

Power BI でのデータゲートウェイの設定

このステップでは、Power BI テナントに管理者としてログインし、Power BI が AWS データソースに接続する方法を設定します。次の手順を実行します。

  1. (任意のマシンの) ブラウザで、https://powerbi.com を起動します。
  2. 管理者権限を持つアカウントでログインします。データゲートウェイ用のアカウントと同じアカウントを使用します。
  3. 歯車のアイコンを選択します。
  4. [Manage gateways] を選択します。
  5. 以前にインストールしたゲートウェイを選択します。
  6. チェックボックス [Allow user’s custom data connectors to refresh through this gateway cluster] をオンにします
  7. [Apply] を選択します。
  8. [ADD DATA SOURCE] を選択します。
  9. 次のパラメータを使用して、Amazon Redshift のデータソースを作成します。
    • Data Source Name – Amazon Redshift Private VPC。
    • Data Source Type – Amazon Redshift。
    • Server – AWS CloudFormation Stack Outputs の [RedshiftClusterEndpoint] キーの値に置き換えます
    • Database – CloudFormation スタックパラメータの一部として以前に指定した Amazon Redshift データベースの名前を入力します。デフォルトは dev です。
    • Username – CloudFormation スタックパラメータの一部として以前に指定したデータベースユーザー名を入力します。
    • Password – CloudFormation スタックパラメータの一部として以前に指定したデータベースパスワードを入力します。
  10. [Add] を選択します。

Power BI モバイルアプリのインストール

この手順では、携帯電話に Power BI アプリをインストールして、後で携帯電話から Power BI レポートとダッシュボードを操作できるようにします。次の手順を実行します。

  1. Apple App Store または Google Play Store に移動して、Microsoft Power BI を検索します。
  2. アプリをインストールします。
  3. それまで使用していたのと同じアカウントで Power BI にサインインします。

Power BI Desktop を使用した Redshift データの視覚化

このセクションでは、Power BI Desktop を Redshift に接続し、レポートを作成し、レポートを Power BI サービスに発行し、そして最後に、携帯電話からレポートを使用できるようにします。

  1. ジャンプボックスから、Power BI Desktop を起動します
  2. Power BI 資格情報を使用してサービスにサインインしていない場合
  3. [Home] > [Get Data] > [More] > [Database] > [Amazon Redshift] の順に選択します
  4. [Connect] をクリックします
  5. 次の画面で、以下の値を入力します。
    • Server – CloudFormation の Stack Outputs タブにあるキー [RedshiftClusterEndpoint] の値をコピーします
    • Databasedev (またはユーザーがデータベースに付けた名前)
    • Data Connectivity ModeDirectQuery
  6. このクラスターに初めて接続する場合は、CloudFormation スタックに以前に指定した Redshift 資格情報を入力する必要があります。ポップアップウィンドウに Redshift のユーザー名とパスワードを入力して、[Connect] をクリックします。
  7. Navigator ウィンドウから [orders]、[lineitem]、および [part] テーブルを選択し、[Load] をクリックします。
  8. データの読み込みが完了したら、インメモリモデルでテーブルの関係を定義する必要があります。
    • Power BI Desktop で、左側の「table relationship」アイコンをクリックして Model ビューに変更します。
    • 次の列をお互いにドラッグアンドドロップして、テーブル間の関係を作成します。
      • o_orderkey = lineitem.l_orderkey
      • p_partkey = lineitem.l_partkey
  1. これで、グラフを作成する準備ができました。Report ビューに変更し、次の視覚エフェクトをレポートに追加します。
    • 日付スライサー
      • 視覚化タイプ – スライサー
      • フィールド – orders.o_orderdate
    • 日付別およびメーカー別の売上
      • 視覚化タイプ – 折れ線グラフ
      • 軸 – orders.o_orderdate
      • 凡例 – part.p_mfgr
      • 値 – lineitem.l_extendedprice
    • 注文数
      • 視覚化タイプ – カード
      • フィールド – orders.o_orderkey のカウント
    • ラインアイテム数
      • 視覚化タイプ – カード
      • フィールド – lineitem.l_linenumber のカウント
  1. 少し書式設定すると、レポートには日付別およびメーカー別の売上が表示され、次のようになります。

  1. レポートを保存し、名前を付けます。

レポートを Power BI に発行する

Power BI Desktop でレポートを作成した後、データセットとレポートを Power BI に発行して、他のユーザーと共有したり、モバイルデバイスから使用したりする必要があります。次の手順を実行します。

  1. Power BI Desktop で、[Publish] を選択します
  2. [My workspace] を選択します。
  3. [Select] を選択します。

データがインポートされていないため、発行が完了するのに長くはかからないはずです。

ゲートウェイ接続の設定

ここで、Power BI に、このレポート内のデータソースを、データゲートウェイに登録した Amazon Redshift データソースにマップするように指示する必要があります。次の手順を実行します。

  1. 任意のマシンからブラウザーを開き、https://powerbi.com を起動します。
  2. Power BI にログインします。
  3. [My workspace] を選択します。
  4. [Datasets] を選択します。
  5. 発行したデータセットの横にある […] アイコンを選択します。
  6. [Settings] を選択します。
  7. Gateway connection セクションを展開します。
  8. Use a data gateway では、[On] を選択します。
  9. Maps to で、前に作成した Amazon Redshift データソースを選択します。
  10. [Apply] を選択します。

Power BI レポートとダッシュボードを使用する

レポートを Power BI に正常に発行したので、https://powerbi.com でレポートを操作できます。

  1. https://powerbi.com を起ち上げます。
  2. Power BI にログインします。
  3. [My workspace] を選択します。
  4. [Reports] を選択します。
  5. 発行したばかりのレポートを選択します。

レポートは、次のスクリーンショットのようになります。 これは、以前と同じ日付別およびメーカー別の売上グラフを示しています。

Power BI ウェブサイトでできるのと同じ方法で、Power BI モバイルアプリのレポートとダッシュボードを操作できます。次のスクリーンショットは、iPhone 向け Power BI アプリでの日付別およびメーカー別の売上レポートの外観を示しています。

 

ウェブサイトからでもモバイルアプリからでも、レポートを表示して操作すると、Amazon Redshift に直接接続するため、常に最新のデータが表示されます。

まとめ

この記事では、Power BI を使用して Amazon Redshift でデータをクエリし、レポート、視覚化、ダッシュボードを生成する方法を示しました。また、AWS クラウドにデプロイできるソリューションアーキテクチャについて説明しました。この記事では、パブリックインターネットアクセスなしで VPC で Power BI をセットアップし、Amazon Redshift クラスターに接続するのがいかに簡単かを示しました。さらに、Power BI ダッシュボードをモバイルデバイスにプッシュする方法についても説明しました。

AWS の同僚である Juan Yu、Sophia Jung、Joe Harris に貴重なコメントと提案をいただいたことに特に感謝申し上げます。

質問や提案がある場合は、コメント欄にフィードバックを残してください。Amazon Redshift の実装を最適化するためにさらに支援が必要な場合は、AWS アカウントチームまたは信頼できる AWS パートナーにお問い合わせください。

 


著者について

Vu Le は、AWS プロフェッショナルサービスの戦略的アカウントチームのシニアデータアーキテクトです。

 

 

 

 

Po Hong 博士は、AWS プロフェッショナルサービスのデータ & アナリティクスグローバル専門業務のシニアデータアーキテクトです。