本日、Power BI データマートが東南アジア (シンガポール) でも使用できるようになったようで、シンガポールから東日本にテナントをお引越ししなくてもよかったのではと思う今日この頃ですが、私が使用している Power BI Premium Per User (PPU) の環境でデータマートを触れるようになったので、SQL Database の構成を簡単にではありますが確認してみました。(Power BI Embedded でも試すことができ、PPU も Embedded も同じ構成となっているようでした)
考慮事項と制限事項 で東アジアが制限から外れたので、日本の Power BI ユーザーも広範囲で試すことができそうですね。
Power BI データマートの説明については、データマートの概要 のドキュメントツリーを確認していただければと思います。
データマートの概要 に記載されていますが、Powre BI データマートで読み込まれたデータは、SQL Database に格納されており、作成したデータマートの設定の「サーバー設定」の接続文字列を使用することで、T-SQL のインタフェース (SQL エンドポイント) からデータの参照をすることができます。(認証については、AAD 認証のみが使用でき、データマートのアクセス許可を利用する形になるかと思います)
データマートに取り込んだデータについては、SQL Database のビュー経由で参照を行うことができ、SQL Database に対してクエリが実行できるアプリからであれば、データマート内のテーブルに自由にアクセスすることができます。
使用されている SQL Database の環境については、Elastic Pool を使用した汎用目的 (General Purpose) の環境となるようです。
これについては次のクエリで確認することができます。
SELECT * FROM sys.database_service_objectives SELECT slo_name FROM sys.dm_user_db_resource_governance WHERE database_id = DB_ID()
実行した結果がこちらになります。
上記のクエリではカレントの DB のみ、情報を表示していますが、このプール内には複数の DB が存在しており、マルチテナントのような活用方法になっているようでした。
データアクセスはビュー経由で実施しますが、実際のデータはテーブルに格納されています。
ビューの定義が以下になるのですが、「storage」というスキーマ内のテーブルに実際のデータが格納されており、それを参照するビューとしてデータアクセスが可能になっています。
このテーブルですが、「クラスター化列ストアインデックス」が設定されているテーブルとなっているようで、データマートのテーブルは列志向インデックスのテーブルに格納がされるようです。
増分更新の設定をした場合はパーティションも活用されているようで、パーティション構成のテーブルの参考にもなりそうな感じがありました。
次んクエリを実行することで、データベースレベルの権限を確認することができます。
select * from sys.fn_my_permissions(NULL, 'DATABASE')
現時点では、広くパフォーマンス情報等を見れる権限がついているので、SQL Database の内部情報を見るクエリがわかっていれば、様々な情報を確認することができるかと。
データマートは、T-SQL のインタフェースを持つデータストアではなく、実際に SQL Server ベースの環境が使用されているので、SQL Server の知識があるといろいろと情報を見れて、動作を把握するのが捗りますね。