一.使用上のアドバイス
1.DEFのネストレベルが過度に多くしないこと
DEF 関数のネストレベルを過度に多くしないことはお勧めします。バックエンドの計算では複雑なSQLが生成されるため、データ量が大きい場合にはパフォーマンスに影響を与え、計算時間が長くなり、ダッシュボードの読み込み速度が低下する恐れがあります。
単一数式におけるDEFのネスト制限
このような状況を避けるため、管理者は [システム管理]-[BIパラメータ]で単一数式のネストレベルを制限することができます(デフォルトは4層)。設定後、[保存] をクリックしてください。以下の図のように:
多ステップのDEFネストが過度に多くしないこと
例えば、顧客がまずDEF数式列DEF1を新規追加し、その後のDEF数式列でDEF1に依存して計算する場合、これは2層のネストとなります。ネストが過度に多くなるとパフォーマンスの負荷が増加し、読み込みが遅くなり、深刻な場合はシステムがダウンすることさえあります。
ユーザはパラメータを調整し、セルフデータセットのすべてのステップにおける DEF のネストレベルを検出することができ、制限を超える場合はエラーメッセージを表示します。詳細は本文の第三章第2.3節を参照してください。
2.セルフデータセットにおけるDEFステップの間にjoinステップを交差しないこと
原因:FineBI6.1.5 以降のバージョンでは、DEFステップの間にjoinステップがない場合、DEFの計算速度を向上させることができます。
join系ステップとは:[左右結合]/[上下結合]/[グループ化集計]/[行を列に変換]/[列を行に変換]/[ソート]/[フィルタ]/[重複行の削除]/[行の分割]/[フィールド設定]/[他のテーブルから列を追加]
join系ステップの特徴:データの行数/順序を変更するため、その後のDEF計算の複雑度が増加し、FineBIのパフォーマンスが低下します。
二.機能説明
1.セルフデータセットにおけるDEF関数の計算ロジック
セルフデータセットにおいて、DEF 関数の新規数式列を出力する場合、以下の図のように:
計算中、DEFステップは2つに分割できます:
1)DEF内のパラメータ(パラメータ1は集約指標、パラメータ2はグループ化、パラメータ3はフィルタ)に基づいてDEFビューを作成し、[グループ化集計]および[フィルタ]を行います
2)グループ化情報に基づいて、データ編集中の元のビューとDEFビューを結合し、最終結果を得ます
2.DEFステップによる複雑度指標の上昇
先ほどのDEFの説明では、2つのビューに言及しました:元のビューとDEFビュー。新規追加列のDEFについては、元のビューに基づいて[グループ化集計]を行うためのDEFビューを作成し、元のビューと左右結合します。
そのため、計算全体の複雑度が必然的に上昇します。シーンは以下の通りです:
シーン1:DEFステップの間にネスト関係が存在する場合
例えば、DEF2 が DEF1 をネストする場合、以下の図のように:
シーン2:DEF の間にjoinステップが存在する場合
他のステップとは、その後のdef計算に影響を与える(データの行数/順序を変更する)ものを指します:
[左右結合]/[上下結合]/[グループ化集計]/[行を列に変換]/[列を行に変換]/[ソート]/[フィルタ]/[重複行の削除]/[行の分割]/[フィールド設定]/[他のテーブルから列を追加]
例:フィルタによりデータの行数が変化するため、DEF2 は DEF1 と同じメインビューを共有することができず、フィルタ後のビューに基づいて計算する必要があります。
3.商品の最適化
FineBI6.1.5では、一部のDEFシーンの計算を最適化し、複雑度の上昇を避けます。
シーンの説明:複数のDEFの間にネスト関係がなく、joinステップも存在しない場合
[数式列新規追加]/[集計列新規追加]/[値付与列追加]/[条件ラベル列]/[時間差]/[時間取得]/[列の分割]などのステップは、DEF 計算の複雑度を増加させません。
この場合、複数のDEFは同じビューに基づいて計算することができます。これにより、パフォーマンスが向上します。
三.セルフデータセットにおけるDEFの最適化
1.問題概要
顧客が大量のDEFネストステップを持ち、DEFの間にいくつかのjoinステップも存在する場合、セルフデータセットが生成する計算の説明は非常に複雑になり、編集/更新段階でシステムの負荷が過大になり、システムがダウンすることさえあります。
2.ソリューション
2.1親テーブルの更新
データセットに親テーブルが存在する場合、その親テーブルを更新し、親テーブルが更新されていないことによる追加のdefの複雑度を避けます。
2.2ステップ順序の調整
セルフデータセットで使用されているdef数式のステップ数を確認し、計算結果に影響を与えない場合、以下の最適化方案を参考に最適化を行うことができます。
1)元の[左右結合]はDEFステップの間に交差されます。以下の図のように:
2)[左右結合]ステップをまとめ、DEF計算の前に配置します。以下の図のように:
2.3制御パラメータの調整
セルフデータセットで制限を超えるDEFステップを使用する必要がある場合、FineDBデータベースのセルフデータセットのDEFネストレベル制限パラメータである SystemOptimizationConfig.etlDefComplexityLimit の値を調整する必要があります。
例えば、セルフデータセットの新規追加列DEFの制限パラメータの値を5に調整し、DEFステップのネストが5層を超える場合にエラーがトリガーされます。制限条件がトリガーされた場合、エラーは以下の図のように: