しばらく山とランは遠のいています

仕事、そしてコロナの関係でしばらく山やランからは遠ざかっています。来年の春から復帰できるようそろそろ運動再開していきたいと思います。ちなみに今、BIツールのPower BIが半分趣味になって、完全な運動不足になっています。20201020

2020年12月17日木曜日

【Power BI】Power Queryで計算した値をデータを読み取らず使いまわす方法はないか

 Power BIを使っていて意外に難しいことがあります。
最大値を求めたり、最小値を求めることはレポートでDAXを使えば高速で、簡単です。
ただ、これをPower Queryでしようとすると結構パフォーマンスで悩みます。特に計算した値を他のクエリで使いまわす時はよく考えないとすごく重い処理になってしまいます。

結論的に、大きなソースデータから算出する最大値や最小値などの数値は、可能であればソースデータを読み込む前に計算してその計算結果を読み込む方がいいです。

PowerQueryではある数値を計算してそれを結果にして他で参照する場合、参照するクエリを更新すると必ずその数値を算出するためのソースデータを読みに行きます。そのため、ソースデータのサイズが大きく、他のクエリからの参照回数が多いととても重くなります。

これを防ぐ方法がTable.Buffer、List.Bufferで一時的にメモリに保存するのですが、これがうまく機能するかどうかはケースバイケースです。ソースデータが大きいとこの関数自体にデータをセットするのが重くなるので、試してみないと効果がわかりません。

いろいろ調べましたが、大きなデータから特定の数値を計算してそれを使いまわす場合は、PowerQueryでその処理はせずに面倒でも事前に計算してその結果を読み込む方が無難です。

以前書いた関連記事
https://asakaki.blogspot.com/2020/06/power-bi2-tablebuffer.html


0 件のコメント: