反饋已提交
網絡繁忙
將多個資料集/表根據某幾個欄位進行連結,一般有三種關聯方式:過濾、SQL語句、動態參數注入。
透過過濾的方式,報表的展現速度會很慢,而SQL 語句又相對複雜。使用動態參數注入的方式,既可加快報表的展現速度,又不用編寫複雜的 SQL 語句。當處理小容量資料集時,參數注入的優越效能是顯而易見的。對於超大資料集,最好使用SQL語句。
動態參數注入的原理:透過注入的值對資料查詢中的資料進行過濾操作,使得資料查詢只讀取過濾後的資料,由此提高報表的效能。
本文透過3種連結資料集的方式展現動態參數注入的優勢。
本節內容:
透過過濾連結資料集。
透過SQL語句連結資料表。
透過動態參數注入連結資料集。
管理員登入決策平臺,進入【管理】 → 【智慧運維】 → 【平臺日誌】。
將日誌級別改為【INFO】,點選【儲存】。
新建資料庫查詢【ds1】。
SELECT * FROM ORDERS。
拖入表格【ORDERS】。
新建資料庫查詢【ds2】。
SELECT * FROM ORDERSDETAIL。
拖入表格【ORDERSDETAIL】。
B3:E3:拖入【ds1】資料欄【ORDERID】、【SIGNDATE】、【SHIPDATE】和【AMOUNT】。
F3:I3:拖入【ds2】資料欄【ORDERID】、【PRODUCTID】、【QUANTITY】和【PRICE】。
B2:I2:輸入表頭,填充灰色。
B2:I3:居中對齊,新增邊框。
選中【F3】單元格,編輯過濾器。
寫入條件:【ORDERID】等於B3,點選【新增】。
很顯然【ds2】中的資料是全部取出的。如果資料量特別大,將資料全部取出會降低報表的效能。
編寫SQL語句:
SELECT * FROM ORDERS a
left join ORDERSDETAIL b on a.ORDERID=b.ORDERID。
B3:I3:拖入【ds1】資料列【ORDERID】、【SIGNDATE】、【SHIPDATE】、【AMOUNT】、【ORDERID】、【PRODUCTID】、【QUANTITY】和【PRICE】。
報表計算時間將至47ms。SQL語句的執行是快的,但是當涉及的資料表很多時,定義 SQL語句就會很麻煩,也不容易閱讀。
拖入表格【ORDERS】SELECT * FROM ORDERS。
使用以下資料查詢。
SELECT * FROM ORDERSDETAIL
WHERE ORDERID='${orderid}'。
B3~E3:拖入【ds1】數據列【ORDERID】、【SIGNDATE】、【SHIPDATE】和【AMOUNT】。
F3~I3:拖入【ds2】數據列【ORDERID】、【PRODUCTID】、【QUANTITY】和【PRICE】。
B2~I2:輸入表頭。填充灰色。
B2~I3:居中對齊,添加邊框。
選中【F3】單元格,點選注入。
點選【+】添加註入條件,左側框寫入orderid,右側框資料型別選擇公式,點選後在公式定義框輸入B3。
完成設定後,F3左下角出現藍色三角,表示F3中的資料列設定了動態參數。
資料是根據資料集參數的值逐一讀取的,所以記憶體可以再讀取後及時釋放。
文 檔回 饋
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉