3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Power BI workout - ビジュアルレベルのキャッシュ

Posted at

"ビジュアルレベル キャッシュ"という用語は正式なものではないかもだが、それはレポート表示のパフォーマンスを向上させるための仕組みを指している。

ところで、この仕組みを理解しないままレポートのパフォーマンスを確認してはないだろうか?

データを投影するビジュアルは以下の流れで動作:

  1. ビジュアルごとにDAXクエリを生成(クエリは必ずしも一つだけではない)
  2. Power BI セマンティックモデル(データセット)に問い合わせ
  3. 得られたデータを投影

ビジュアルに適用されるフィルタが変更されるたびに、以下の流れで動作:

  1. ビジュアルごとにフィルタを含めたDAXクエリを生成(クエリは必ずしも一つだけではない)
  2. Power BI セマンティックモデル(データセット)に問い合わせ
  3. 得られたデータを投影

ただし、ビジュアルへの投影に使用したデータはキャッシュされ、再利用される。必要なときだけ Power BI セマンティックモデル(データセット)に問い合わせてその結果からビジュアルに投影するということだ。これは、同じ結果を得られる DAXクエリの評価を繰り返さない最適化戦略なのである。

動作を確認する

Power BI Desktop の Performance Analyzer で動作確認は充分だ。

ビジュアルにデータを投影するためセマンティック モデル(データセット)に問い合わせが行われる。
DAX クエリの結果が得られるまで 173ms を要し、そのうち DirectQuery による結果が得られるまで 170ms を要したという結果だ。
image.png

次にフィルタを適用した。フィルタが適用された結果を得るために DAX クエリ 188ms そのうち DirectQuery 187ms を要した。
image.png

次にフィルタの変更を適用した、ここでは適用されるフィルタがない状態に。
DAX クエリの評価はされなかったことを示している。DirectQueryも。
image.png
再び同じフィルタを適用した。
ここでも DAX クエリの評価はされなかったことを示している。DirectQueryも。
image.png

思ったこと🙄

レポートユーザから表示パフォーマンスの改善要求があったということはさ、思いのほか深刻な状態かもしれない。ビジュアルレベルのキャッシュは常に動作しているはずなのにね。

その他

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?