はじめに
Amazon S3 + Power BIで検討する場合の方式について備忘録
※2020/8に検討した結果です。
方式
S3からPower BI に直接つなぐ方法は基本的には以下の三つです。
直接つながないADFなどのデータ移動サービスでAzureに移動するパターンもあります。
推奨は3 or Azureに移動する、です。
- S3 APIによる取得 (Importのみ)
参考:https://community.powerbi.com/t5/Power-Query/Can-I-connect-to-a-Amazon-S3-bucket-using-Power-Query/td-p/111919 - CData など3rd Party ツールによる取得(製品によりDQ 可能)
参考:https://www.cdata.com/jp/kb/tech/amazons3-cloudhub-powerbi-service.rst - Redshift経由、Athena経由による取得(DQ 可能)
SpectrumやAthenaはETL不要とできる点は良いと思います
注意事項
認証・認可
当然ながら、接続方式により、選べる認可機能が異なります。
特に1の場合にはデータレイク側で直接権限制御となるため、行レベルのセキュリティなどの詳細なセキュリティの実装は難しいです。
また、AWS上にある場合にはPower BI Service上でのSSOは利用できないので、Power BI Serviceでレポートを公開するときの認可制御はPower BI dataset側での実装が必要です
参考:
※PBI Desktopからなら、RedshiftもAD認証でとりに行けるようです
https://aws.amazon.com/jp/blogs/news/federate-amazon-redshift-access-with-microsoft-azure-ad-single-sign-on/
パフォーマンス
3と一部の3rd Partyについては、Direct Queryベースのものであれば、クエリを実行するエンジン(Athena,Redshiftなど)の性能次第ですが、Importの場合はPower Queryを利用してRedshiftから取得したデータ加工を行う場合、処理環境が共有環境(Pro,Free)なのか、占有環境(Premium)の違いにより、安定しない場合があります。
共有容量の場合、スペック不足による、タイムアウトの可能性が上がります。
また、1,2の方式でS3に直接データ取得をする場合、関係ないデータはスキャンしないなどのパフォーマンス向上技術の恩恵を受けることができません。
このあたりは、コスト最適と格納を目指すストレージ層と、読み取り性能の最適化を目指すDWH層の違いとして割り切るのかどうかとなるかと思います