DEF系関数の使用上の注意事項

  • Last update:  2025-03-28
  • 一.使用上のアドバイス

    1.DEFのネストレベルが過度に多くしないこと

    DEF 関数のネストレベルを過度に多くしないことはお勧めします。バックエンドの計算では複雑なSQLが生成されるため、データ量が大きい場合にはパフォーマンスに影響を与え、計算時間が長くなり、ダッシュボードの読み込み速度が低下する恐れがあります。

    単一数式におけるDEFのネスト制限

    このような状況を避けるため、管理者は [システム管理]-[BIパラメータ]で単一数式のネストレベルを制限することができます(デフォルトは4層)。設定後、[保存] をクリックしてください。以下の図のように:

    图片1.png 

    多ステップのDEFネストが過度に多くしないこと

    例えば、顧客がまずDEF数式列DEF1を新規追加し、その後のDEF数式列でDEF1に依存して計算する場合、これは2層のネストとなります。ネストが過度に多くなるとパフォーマンスの負荷が増加し、読み込みが遅くなり、深刻な場合はシステムがダウンすることさえあります。

    图片2.png 

    ユーザはパラメータを調整し、セルフデータセットのすべてのステップにおける DEF のネストレベルを検出することができ、制限を超える場合はエラーメッセージを表示します。詳細は本文の第三章第2.3節を参照してください。 

    2.セルフデータセットにおけるDEFステップの間にjoinステップを交差しないこと

    原因:FineBI6.1.5 以降のバージョンでは、DEFステップの間にjoinステップがない場合、DEFの計算速度を向上させることができます。

    join系ステップとは:[左右結合]/[上下結合]/[グループ化集計]/[行を列に変換]/[列を行に変換]/[ソート]/[フィルタ]/[重複行の削除]/[行の分割]/[フィールド設定]/[他のテーブルから列を追加]

    join系ステップの特徴:データの行数/順序を変更するため、その後のDEF計算の複雑度が増加し、FineBIのパフォーマンスが低下します。

    图片3.png 

    二.機能説明

    1.セルフデータセットにおけるDEF関数の計算ロジック

    セルフデータセットにおいて、DEF 関数の新規数式列を出力する場合、以下の図のように:

    图片4.png 

    計算中、DEFステップは2つに分割できます:

    1)DEF内のパラメータ(パラメータ1は集約指標、パラメータ2はグループ化、パラメータ3はフィルタ)に基づいてDEFビューを作成し、[グループ化集計]および[フィルタ]を行います

    2)グループ化情報に基づいて、データ編集中の元のビューとDEFビューを結合し、最終結果を得ます

    2.DEFステップによる複雑度指標の上昇

    先ほどのDEFの説明では、2つのビューに言及しました:元のビューとDEFビュー。新規追加列のDEFについては、元のビューに基づいて[グループ化集計]を行うためのDEFビューを作成し、元のビューと左右結合します。

    そのため、計算全体の複雑度が必然的に上昇します。シーンは以下の通りです:

    シーン1:DEFステップの間にネスト関係が存在する場合

    例えば、DEF2 が DEF1 をネストする場合、以下の図のように:

    图片5.png 

    シーン2:DEF の間にjoinステップが存在する場合

    他のステップとは、その後のdef計算に影響を与える(データの行数/順序を変更する)ものを指します:

    [左右結合]/[上下結合]/[グループ化集計]/[行を列に変換]/[列を行に変換]/[ソート]/[フィルタ]/[重複行の削除]/[行の分割]/[フィールド設定]/[他のテーブルから列を追加]

    例:フィルタによりデータの行数が変化するため、DEF2 は DEF1 と同じメインビューを共有することができず、フィルタ後のビューに基づいて計算する必要があります。

    图片6.png 

    3.商品の最適化

    FineBI6.1.5では、一部のDEFシーンの計算を最適化し、複雑度の上昇を避けます。

    シーンの説明:複数のDEFの間にネスト関係がなく、joinステップも存在しない場合

    [数式列新規追加]/[集計列新規追加]/[値付与列追加]/[条件ラベル列]/[時間差]/[時間取得]/[列の分割]などのステップは、DEF 計算の複雑度を増加させません。

    この場合、複数のDEFは同じビューに基づいて計算することができます。これにより、パフォーマンスが向上します。

    图片7.png 

    三.セルフデータセットにおけるDEFの最適化

    1.問題概要

    顧客が大量のDEFネストステップを持ち、DEFの間にいくつかのjoinステップも存在する場合、セルフデータセットが生成する計算の説明は非常に複雑になり、編集/更新段階でシステムの負荷が過大になり、システムがダウンすることさえあります。 

    2.ソリューション

    2.1親テーブルの更新

    データセットに親テーブルが存在する場合、その親テーブルを更新し、親テーブルが更新されていないことによる追加のdefの複雑度を避けます。

    2.2ステップ順序の調整

    セルフデータセットで使用されているdef数式のステップ数を確認し、計算結果に影響を与えない場合、以下の最適化方案を参考に最適化を行うことができます。

    1)元の[左右結合]はDEFステップの間に交差されます。以下の図のように:

    图片8.png

    2)[左右結合]ステップをまとめ、DEF計算の前に配置します。以下の図のように:

    图片9.png 

    2.3制御パラメータの調整

    セルフデータセットで制限を超えるDEFステップを使用する必要がある場合、FineDBデータベースのセルフデータセットのDEFネストレベル制限パラメータである SystemOptimizationConfig.etlDefComplexityLimit の値を調整する必要があります。

    例えば、セルフデータセットの新規追加列DEFの制限パラメータの値を5に調整し、DEFステップのネストが5層を超える場合にエラーがトリガーされます。制限条件がトリガーされた場合、エラーは以下の図のように:

    图片10.png


    Attachment List


    Theme: 高度なデータ分析学習
    前の記事
    次の記事
    • いいね
    • 良くない
    • 閲覧しただけ

    フィードバック

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    反馈已提交

    网络繁忙