パラメータインジェクション

  • 作成者:ayuan0625
  • 編集回数:14次
  • 最終更新:ayuan0625 于 2021-08-12
  • 一.概要

    1. 複数のデータセット/テーブルをいくつかのフィールドで連携するのは、三つの方法があります。フィルタ、SQL文で処理、ダイナミックパラメータインジェクション

    2. フィルタは帳票のロード速度の影響が比較的に大きいと思われます。SQL文で本番環境のデータを処理する場合、複雑になってしまいます。ダイナミックパラメータインジェクションは帳票ロード速度への影響が比較的に小さく、複雑なSQL文を書く必要もありません。通常なデータ処理に向いています。ただし、極めて大きなデータセットを処理する場合、やはりSQL文を使用したほうが推薦されます。

    3. ダイナミックパラメータインジェクションのメカニズムはインジェクションされた値を通して、事前にデータクエリの結果を効率よくフィルタしておきます。:データクエリの最終結果はフィルタ後のデータしか読み取りません。このような事前フィルタを通して、帳票性能を最適化させます。

    4. 本文はデータセット/テーブルを連携する方法をそれぞれ紹介します。

    注意:詳細な計算時間を確認するには帳票システムのログレベルを[INFO] 又はより詳細なレベルに設定する必要があります。

    二.フィルタでデーでセットを連携

    1.テンプレート作成

    1. 以下のSQL文を使用して、データセットds1を新規作成します。

      SELECT * FROM ORDERS
    2. 以下のSQL文を使用して、データセットds2を新規作成します。

      SELECT * FROM ORDERSDETAIL
    3. ds1のデータ列[ORDERID]、[SIGNDATE]、[SHIPDATE]と[AMOUNT]をB3~E3に入れます。

    4. ds2のデータ列[ORDERID]、[PRODUCTID]、[QUANTITY]と[PRICE]をF3~I3に入れます。

    5. B2:I2にヘッダを追加し、B2:I3に中央揃えを設定します。テーブル全体の枠を追加します。

    2.フィルタを設定

    1. セルF3を選択し、ダブルクリックして、データ列設定パネルが表示されます。

    2. [フィルタ]タグを選択します。[オプション列]は[ORDERID]を選択し、[演算子]を[等しい]を選択します。

    3. フィルタ値のタイプを[セル]に設定し、B3と設定します。

    4. フィルタ条件を追加し、[確定]をクリックします。

    3.帳票プレビューとログ分析

    1. 帳票をプレビューします。

    2. ログを確認します。下図のように、帳票計算時間は74msです。

    3. この場合、ds2のデータはすべて読み取りました。この方法は比較的に効率が低いです。



    三.SQL文でデーでセットを連携

    1.テンプレート作成

    1. 以下のSQL文を使用して、データセットds1を新規作成します。

      SELECT * FROM ORDERS a
      left join ORDERSDETAIL b on a.ORDERID=b.ORDERID

    2. ds1のデータ列[ORDERID]、[SIGNDATE]、[SHIPDATE]、[AMOUNT]、[ORDERID]、[PRODUCTID]、[QUANTITY]と[PRICE]をB3:I3に入れます。

    3. B3:I3にヘッダを追加し、B2:I3に中央揃えを設定します。テーブル全体の枠を追加します。

    2.帳票プレビューとログ分析

    1. 帳票をプレビューします。

    2. ログを確認します。帳票計算時間は30msです。

    3. SQL文で処理すると、確かにロード速度が速くなりました。しかし、複雑なデータをSQLで処理すると、SQL文が非常に長く、読みにくくなってしまいます。

    四.ダイナミックパラメータインジェクションでデーでセットを連携

    1.テンプレート作成

    1. 以下のSQL文を使用して、データセットds1を新規作成します。

      SELECT * FROM ORDERS
    2. 以下のSQL文を使用して、データセットds2を新規作成します。

      SELECT * FROM ORDERSDETAIL
      WHERE ORDERID='${orderid}'
    3. ds1のデータ列[ORDERID]、[SIGNDATE]、[SHIPDATE]と[AMOUNT]をB3:F3に入れます。

    4. ds2のデータ列[ORDERID]、[PRODUCTID]、[QUANTITY]と[PRICE]をF3:I3に入れます。

    5. B2:I2にヘッダを追加し、B2:I3に中央揃えを設定します。テーブル全体の枠を追加します。

    2.ダイナミックパラメータインジェクションを設定

    1. セルF3を選択し、[セル要素]‐[インジェクション]をクリックします。

    2. [パラメータ名]をorderidに設定します。値のタイプを[数式]に設定し、=B3を入力します。

    3.ダイナミックパラメータインジェクションのマーク

    1. 下図のようにセルF3の左下に青い三角が表示されます。これはダイナミックパラメータインジェクションを設定したと意味しています。

    4.帳票プレビューとログ分析

    1. 帳票をプレビューします。

    2. ログを確認します。下図のように、SQL文はそれぞれB3の値によって実行されています。


    Attachment List


    Theme: FineReport システム性能最適化
    既に最初
    既に最後
    • Helpful
    • Not helpful
    • Only read