您好,登錄后才能下訂單哦!
多維分析(BI)系統(tǒng)后臺數(shù)據(jù)源通常有三種選擇。一、普通數(shù)據(jù)庫;二、專業(yè)數(shù)據(jù)倉庫;三、BI 系統(tǒng)自帶的數(shù)據(jù)源。
但是,這三種選擇都有各自的問題。普通數(shù)據(jù)庫一般都是行式存儲,很難獲得多維分析希望的高性能,只適用較小數(shù)據(jù)量。專業(yè)數(shù)據(jù)倉庫有不少是列式存儲的,性能問題不大,但是價格都比較昂貴,建設(shè)、擴(kuò)展和維護(hù)成本也都非常高。BI 系統(tǒng)自帶的數(shù)據(jù)源都比較封閉,只能為自家的 BI 前端提供支持,無法為多個不同廠家的前端提供數(shù)據(jù)服務(wù)。
集算器可以獨立承擔(dān)輕量級多維分析后臺的作用,相當(dāng)于中小型數(shù)據(jù)倉庫或者數(shù)據(jù)集市。結(jié)構(gòu)圖如下:
集算器可以將多維分析的數(shù)據(jù)事先以列存形式存儲到二進(jìn)制文件中,稱為組表。多維分析前端應(yīng)用拖拽生成 SQL,通過集算器 JDBC 提交。集算器對組表執(zhí)行 SQL 查詢,將結(jié)果返回給多維分析前端。組表文件也可由集算器從各種異構(gòu)數(shù)據(jù)源采集數(shù)據(jù)并計算而來。
和普通數(shù)據(jù)庫方案相比,集算器列存的二進(jìn)制文件能夠直接提升性能。而對于昂貴的專業(yè)數(shù)據(jù)庫和相對封閉的 BI 自帶數(shù)據(jù)源,集算器可以提供更加經(jīng)濟(jì)、簡便的解決方案,并能夠從各種異構(gòu)數(shù)據(jù)源采集數(shù)據(jù)。
集算器有三種部署方式:1、集成在前端應(yīng)用中;2、獨立服務(wù)器;3、集群熱備。下面介紹具體方法。
在下面的案例中,多維分析系統(tǒng)要針對訂單數(shù)據(jù)做自助分析。為了簡化起見,多維分析系統(tǒng)前臺用 tomcat 服務(wù)器中的 jdbc.jsp 來模擬。Tomcat 安裝在 windows 操作系統(tǒng)的 C:\tomcat6。
集算器 JDBC 集成在多維分析應(yīng)用中。jdbc.jsp 模仿多維分析應(yīng)用系統(tǒng),產(chǎn)生符合集算器規(guī)范的 SQL,通過集算器 JDBC 提交給集算器 SPL 腳本處理。
多維分析系統(tǒng)的數(shù)據(jù)來自于生產(chǎn)數(shù)據(jù)庫 demo 中的 ORDERS 表,生產(chǎn)庫是 ORACLE 數(shù)據(jù)庫。多維分析系統(tǒng)不能直接連 demo 數(shù)據(jù)庫實現(xiàn)分析,以免給生產(chǎn)數(shù)據(jù)庫帶來過多的壓力。ORDERS 訂單表是全量數(shù)據(jù),集算器 ETL 每天將當(dāng)天的最新數(shù)據(jù)同步到組表文件中。日期以訂購日期 ORDERDATE 為準(zhǔn),假設(shè)當(dāng)前的日期是 2015-07-18。
用下面的 ordersAll.sql 文件在 ORACLE 數(shù)據(jù)庫中完成 ORDERS 表的建表和數(shù)據(jù)初始化。
ordersAll
數(shù)據(jù)截止到 2017 年 7 月 17 日。
多維分析系統(tǒng)后臺上線初始化的時候,要將 ORDERS 表中的歷史數(shù)據(jù)同步到集算器的二進(jìn)制文件中。這是上線前一次性執(zhí)行的準(zhǔn)備工作,上線運行后就不需要執(zhí)行了。
在集算器中,新建一個數(shù)據(jù)源 orcl,連接 ORACLE 數(shù)據(jù)庫。用 SPL 語言腳本 etlAll.dfx 將全部數(shù)據(jù)讀取到集算器組表文件 orders.ctx 中。SPL 腳本如下:
A | B | |
---|---|---|
1 | =connect(“orcl”) | =A1.cursor@d(“select ORDERDATE,CUSTOMERID,EMPLOYEEID,ORDERID,AMOUNT from ORDERS order by ORDERDATE,CUSTOMERID,EMPLOYEEID,ORDERID”) |
2 | =file(“C:/tomcat6/webapps/DW/WEB-INF/data/orders.ctx”) | |
3 | =A2.create(#ORDERDATE,#CUSTOMERID,#EMPLOYEEID,#ORDERID,AMOUNT) | |
4 | =A3.append(B1) | >A1.close() |
Orders.ctx 是組表文件,默認(rèn)是采用列式存儲的,支持任意分段的并行計算,可以有效提升查詢速度。生成組表的時候,要注意數(shù)據(jù)預(yù)先排序和合理定義維字段。本例中,按照經(jīng)常過濾、分組的字段,將維字段確定為:ORDERDATE,CUSTOMERID,EMPLOYEEID, ORDERID。
從 ORACLE 中取得數(shù)據(jù)的時候,要按照維字段排序。因為 ORDERDATE,CUSTOMERID,EMPLOYEEID 對應(yīng)的重復(fù)數(shù)據(jù)多,所以放在前面排序;ORDERID 對應(yīng)的重復(fù)數(shù)據(jù)少,所以放在后面排序。
B1 單元格中數(shù)據(jù)庫游標(biāo)的 @d 選項,表示從 ORACLE 數(shù)據(jù)庫中取數(shù)的時候?qū)?numeric 型數(shù)據(jù)轉(zhuǎn)換成 double 型,精度對于金額這樣的常見數(shù)值完全足夠了。如果沒有這個選項就會默認(rèn)轉(zhuǎn)換成 big decimal 型數(shù)據(jù),計算性能會受到較大影響。
多維分析系統(tǒng)上線之后,要每天晚上定時同步當(dāng)天最新的數(shù)據(jù)。我們假設(shè)當(dāng)天日期是 2015-07-18。用下面的 ordersUpdate.sql 文件在 ORACLE 數(shù)據(jù)庫給 ORDERS 表增加當(dāng)天的數(shù)據(jù),模擬數(shù)據(jù)的增量。
ordersUpdate
用 SPL 語言腳本 etlUpdate1.dfx 將當(dāng)天數(shù)據(jù)增量補(bǔ)充到集算器組表文件 orders.ctx 中。SPL 腳本如下:
A | B | C | |
---|---|---|---|
1 | =connect(“orcl”) | ||
2 | =A1.cursor@d(“select ORDERDATE,CUSTOMERID,EMPLOYEEID,ORDERID,AMOUNT from ORDERS where ORDERDATE=? order by ORDERDATE,CUSTOMERID,EMPLOYEEID,ORDERID”,etlDate) | ||
3 | =file(“C:/tomcat6/webapps/DW/WEB-INF/data/orders.ctx”) | ||
4 | =A3.create() | =A4.append(A2) | =A3.rollback() |
5 | >A1.close() |
etlUpdate.dfx 的輸入?yún)?shù)是 etlDate,也就是需要新增的當(dāng)天日期。
B4 單元格直接將新數(shù)據(jù)追加到組表文件中。因為第一個排序字段是 orderdate,所以追加新數(shù)據(jù)不會影響排序。如果第一個排序字段不是 orderdate,就要重新排序。
C4 中的 rollback 是回滾函數(shù),若 B4 執(zhí)行 append 過程中,出現(xiàn)錯誤,那么將執(zhí)行回滾操作,恢復(fù)到 append 操作之前的組表狀態(tài)。正常執(zhí)行完畢,則不會回滾。
etlUpdate1.dfx 腳本可以用 windows 或者 linux 命令行的方式執(zhí)行,結(jié)合定時任務(wù),可以定時執(zhí)行。也可以用 ETL 工具來定時調(diào)用。
windows 命令行的調(diào)用方式是:
C:\\Program Files\\raqsoft\\esProc\\bin>esprocx.exe C: \\etlUpdate1.dfx
linux 命令是:
/raqsoft/esProc/bin/esprocx.sh /esproc/ etlUpdate1.dfx
集算器 JDBC 集成在多維分析的應(yīng)用中,接收到 SQL 后查本地文件 orders.ctx 返回結(jié)果。
1、下面壓縮文件中的 DW 目錄復(fù)制到 tomcat 的應(yīng)用目錄。
DW
目錄結(jié)構(gòu)如下圖:
配置文件在 classes 中,在官網(wǎng)上獲取的授權(quán)文件也要放在 classes 目錄中。集算器的 Jar 包要放在 lib 目錄中(需要哪些 jar 請參照集算器教程)。
修改 raqsoftConfig.xml 中的主目錄配置:
<mainPath>C:\\tomcat6\\webapps\\DW\\WEB-INF\\data</mainPath>
配置好主目錄后,orders.ctx 就可以不寫全路徑名,直接寫 from orders.ctx 即可。
2、編輯 DW 目錄中的 jdbc.jsp,模擬前臺界面提交 sql 展現(xiàn)結(jié)果。
<%@ page language=”java” import=”java.util.*” pageEncoding=”utf-8″%> <%@ page import=”java.sql.*” %> <body> <% String driver = “com.esproc.jdbc.InternalDriver”; String url = “jdbc:esproc:local://”; try { Class.forName(driver); Connection conn = DriverManager.getConnection(url); Statement statement = conn.createStatement(); String sql =”select top 10 ORDERID,CUSTOMERID,EMPLOYEEID,ORDERDATE,AMOUNT from ORDERS.ctx where ORDERDATE=date(‘2015-07-18’) and AMOUNT>100″; out.println(“Test page v1<br><br><br><pre>”); out.println(“訂單ID”+”\\t”+”客戶ID”+”\\t”+”雇員ID”+”\\t”+”訂購日期”+”\\t”+”訂單金額”+”<br>”); ResultSet rs = statement.executeQuery(sql); int f1,f6; String f2,f3,f4; float f5; while (rs.next()) { f1 = rs.getInt(“ORDERID”); f2 = rs.getString(“CUSTOMERID”); f3 = rs.getString(“EMPLOYEEID”); f4 = rs.getString(“ORDERDATE”); f5 = rs.getFloat(“AMOUNT”); out.println(f1+”\\t”+f2+”\\t”+f3+”\\t”+f4+”\\t”+f5+”\\t”+”<br>”); } out.println(“</pre>”); rs.close(); conn.close(); } catch (ClassNotFoundException e) { System.out.println(“Sorry,can`t find the Driver!”); e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } %> </body><%@ page language=”java” import=”java.util.*” pageEncoding=”utf-8″%><%@ page import=”java.sql.*” %><body><%String driver = “com.e sproc.jdbc.InternalDriver”;String url = “jdbc:esproc:local://”;try {Class.forName(driver);Connection conn = DriverManager.getConnection(url);S tatement statement = conn.createStatement();String sql =”select top 10 ORDERID,CUSTOMERID,EMPLOYEEID,ORDERDATE,AMOUNT from ORDERS.ctx where ORD ERDATE=date(‘2015-07-18’) and AMOUNT>100″; out.println(“Test page v1<br><br><br><pre>”); out.println(“訂單ID”+”\\t”+”客戶ID”+”\\t”+”雇員ID”+”\\t”+”訂購日期”+”\\t”+”訂單金額”+”<br>”); ResultSet rs = statement.executeQuery(sql); int f1,f6; String f2,f3,f4; float f5; while (rs.next()) { f1 = rs.getInt(“ORDERID”); f2 = rs.getString(“CUSTOMERID”); f3 = rs.getString(“EMPLOYEEID”); f4 = rs.getString(“ORDERDATE”); f5 = rs.getFloat(“AMOUNT”); out.println(f1+”\\t”+f2+”\\t”+f3+”\\t”+f4+”\\t”+f5+”\\t”+”<br>”); } out.println(“</pre>”); rs.close(); conn.close(); } catch (ClassNotFoundException e) { System.out.println(“Sorry,can`t find the Driver!”); e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } %></body>
可以看到,jsp 中先連接集算器的 JDBC,然后提交執(zhí)行 SQL。步驟和一般的數(shù)據(jù)庫完全一樣,具有很高的兼容性和通用性。對于多維分析工具來說,雖然是界面操作來連接 JDBC 和提交 SQL,但是基本原理和 jsp 完全一樣。
3、啟動 tomcat,在瀏覽器中訪問 http://localhost:8080/DW/jdbc.jsp,查看結(jié)果。
還可以繼續(xù)測試如下情況:
1、分組匯總
sql ="select CUSTOMERID,EMPLOYEEID,sum(AMOUNT) 訂單總額,count(1) 訂單數(shù)量 from ORDERS.ctx where ORDERDATE=date(‘2015-07-18’) group by CUSTOMERID,EMPLOYEEID";
2、并行查詢
sql="select /*+ parallel (4) */ top 10 ORDERID,CUSTOMERID,EMPLOYEEID,ORDERDATE,AMOUNT from ORDERS.ctx where ORDERDATE=date(‘2015-07-18’) and AMOUNT>100"sql="select /*+ parall el (4) */top 10 ORDERID,CUSTOMERID,EMPLOYEEID,ORDERDATE,AMOUNT from ORDERS.ctx where ORDERDATE=date(‘2015-07-18’) and AMOUNT>100"
和 ORACLE 類似,集算器簡單 SQL 也支持 /*+ parallel (4) */ 這樣的并行查詢。
第一種解決辦法是利用應(yīng)用服務(wù)器的資源。在并發(fā)量很大,或者數(shù)據(jù)量很大的情況下,應(yīng)用服務(wù)器會出現(xiàn)較大壓力。這種情況下,推薦用獨立的節(jié)點服務(wù)器進(jìn)行數(shù)據(jù)計算。
集算器 JDBC 接收到 SQL 后,轉(zhuǎn)給 DW.dfx 程序處理。DW.dfx 調(diào)用節(jié)點服務(wù)器上的 DWServer.dfx 進(jìn)行計算。DWServer.dfx 把表名換成文件名,查本地文件 orders.ctx 返回結(jié)果。
下面的 DWServer 目錄復(fù)制到需要的目錄。集算器的節(jié)點服務(wù)器具備跨平臺的特性,可以運行在任何支持 Java 的操作系統(tǒng)上,部署方法參見集算器教程。這里假設(shè)放到 windows 操作系統(tǒng)的 C 盤根目錄。
DWServer
1、系統(tǒng)上線之前執(zhí)行初始化 dfx,將 orders.ctx 文件放到 C:/DWServer/data 目錄中。測試的時候可以直接將已經(jīng)生成好的 orders.ctx 復(fù)制過去。
2、修改前面的 dfx,將 A1 改為 =file(“C:/DWServer/data/orders.ctx”),另存為 etlUpdate2.dfx。修改好的 etlUpdate2.dfx 在 c:\DWServer 目錄。
3、打開應(yīng)用服務(wù)器中的 C:\\tomcat6\\webapps\\DW\\WEB-INF\\dfx\\DW.dfx,觀察理解 SPL 代碼。參數(shù) sql 是傳入的 SQL 語句。
A | B | |
---|---|---|
1 | =callx(“DWServer.dfx”,[sql];[“127.0.0.1:8281”]) | |
2 | return A1.ifn() |
A1:調(diào)用節(jié)點機(jī)上的 DWServer.dfx。參數(shù)是 [sql],中括號表示序列,此時是只有一個成員的序列。[“127.0.0.1:8281”] 是節(jié)點機(jī)的序列,采用 IP: 端口號的方式。
A2:返回 A1 調(diào)用的結(jié)果。因為調(diào)用結(jié)果是序列,所以要用 ifn 函數(shù)找到序列中第一個不為空的成員,就是 SQL 對應(yīng)的返回結(jié)果。
修改 C:\\tomcat6\\webapps\\DW\\WEB-INF\\classes\\raqsoftConfig.xml 中的如下配置:
<mainPath>C:\\tomcat6\\webapps\\DW\\WEB-INF\\dfx</mainPath> <JDBC> <load>Runtime,Server</load> <gateway>DW.dfx</gateway> </JDBC><mainPath>C:\\tomcat6\\webapps\\DW\\WEB-INF\\dfx</mainPath><JDBC><load>Runtime,Server</load><gateway>DW.dfx</gateway></JDBC>
這里標(biāo)簽的內(nèi)容就是 JDBC 網(wǎng)關(guān) dfx 文件。在 BI 系統(tǒng)中調(diào)用集算器 JDBC 時,所執(zhí)行的 SQL 都將交由網(wǎng)關(guān)文件處理。如果不配置這個標(biāo)簽,JDBC 提交的語句會被集算器當(dāng)作腳本直接解析運算。
4、啟動節(jié)點服務(wù)器。
運行 esprocs.exe, 如下圖:
點擊配置按鈕,配置相關(guān)參數(shù):
點擊確定后,返回主界面,點擊啟動按鈕。
5、打開 C:\DWServer\dfx\DWServer.dfx,觀察理解 SPL 代碼。
A | B | C | |
---|---|---|---|
1 | =filename=”C:/DWServer/data/orders.ctx” | ||
2 | =sql=replace(sql,”from ORDERS.ctx”,”from “+filename) | ||
3 | =connect() | =A3.cursor@x(A2) | return B3 |
A1:定義集算器集文件的絕對路徑。
A2:將文件名替換為絕對路徑。
A3-C3:連接文件系統(tǒng)。執(zhí)行 SQL 得到游標(biāo)并返回。
服務(wù)器方式也可以和“應(yīng)用結(jié)構(gòu)一”中一樣配置主目錄,A2 就不用寫絕對路徑了。路徑寫在這里的 SPL 中,好處是同一個服務(wù)器可以給多套數(shù)據(jù)表(文件)提供服務(wù)。如果很多文件都在主目錄下,會不方便管理。
6、重啟 tomcat,在瀏覽器中訪問 http://localhost:8080/DW/jdbc.jsp,查看結(jié)果。
在并發(fā)量不斷增大,或者數(shù)據(jù)量不斷增加的情況下,節(jié)點服務(wù)器可以進(jìn)行橫向擴(kuò)展,應(yīng)對大并發(fā)或大數(shù)據(jù)量計算的壓力。
1、在另一臺 window 的機(jī)器上再部署一套集算器節(jié)點,部署方法和解決方法二略有不同,需要配置一下數(shù)據(jù)分區(qū)。兩臺服務(wù)器的 IP 地址是 168.0.122 和 192.168.0.176。方法二中的 c:\\DWServer 目錄也要復(fù)制到另一臺服務(wù)器上。
圖中數(shù)據(jù)分區(qū)名稱配置為 0,路徑是 c:/DWServer/data。注意,兩個服務(wù)器都要配置。
2、改寫 168.0.122 上的 c:/DWServer/dfx/etlUpdate2.dfx,另存為 etlUpdate3.dfx。
A | B | C | |
---|---|---|---|
1 | =connect(“orcl”) | ||
2 | =A1.cursor@d(“select ORDERDATE,CUSTOMERID,EMPLOYEEID,ORDERID,AMOUNT from ORDERS where ORDERDATE=? order by ORDERDATE,CUSTOMERID,EMPLOYEEID,ORDERID”,etlDate) | ||
3 | =file(“C:/ DWServer/data/orders.ctx”) | ||
4 | =A3.create() | =A4.append(A2) | =A3.rollback() |
5 | >A1.close() | ||
6 | =sync([“192.168.0.176:8281″]:”192.168.0.122:8281”;0) |
A6 單元格是將更新之后的 orders.ctx 同步到 192.168.0.176 的 0 分區(qū),也就是 C:/ DWServer/data 目錄。[“192.168.0.176:8281”] 是指需要同步的節(jié)點機(jī)列表,如果有更多的節(jié)點機(jī)需要同步,可以寫作:[“IP1:PORT1″,”IP2:PORT2″,”IP3:PORT3”]。
因為這里有同步的代碼,所以只需要在 192.168.0.122 上執(zhí)行定時任務(wù) etlUpdate3.dfx 就可以了。
3、打開應(yīng)用服務(wù)器中的 C:\tomcat6\webapps\DW\WEB-INF\dfx\DW.dfx,修改如下:
A | B | |
---|---|---|
1 | =callx(“DWServer.dfx”,[sql];[“192.168.0.122:8281″,”192.168.0.176:8281”]) | |
2 | return A1.ifn() |
A1:調(diào)用節(jié)點機(jī)上的 DWServer.dfx。參數(shù)是 [sql],中括號表示序列,此時是只有一個成員的序列。因為節(jié)點機(jī)是集群,所以有兩個 IP 地址。在多并發(fā)時 callx 會隨機(jī)訪問兩個節(jié)點。
4、重啟 tomcat,在瀏覽器中訪問 http://localhost:8080/DW/jdbc.jsp,查看結(jié)果。
集算器是專業(yè)的數(shù)據(jù)計算中間件(DCM),具備獨立計算的能力,可以脫離數(shù)據(jù)庫、數(shù)據(jù)倉庫為多維分析系統(tǒng)前端提供數(shù)據(jù)源服務(wù)。
集算器采用列存數(shù)據(jù),具備專業(yè)數(shù)據(jù)倉庫的查詢性能,千萬級別的數(shù)據(jù)量,可以達(dá)到秒級的明細(xì)查詢速度。普通數(shù)據(jù)庫一般都是行存,無法達(dá)到多維分析的性能要求。同時,和專業(yè)數(shù)據(jù)倉庫不同,集算器價格都較低,建設(shè)、擴(kuò)展和維護(hù)成本都比較小。
集算器是開放的,對多維分析系統(tǒng)前端提供標(biāo)準(zhǔn)的 JDBC 服務(wù)??梢孕纬善脚_式的后臺數(shù)據(jù)源,為多個不同廠家的前端同時提供數(shù)據(jù)服務(wù)。
先進(jìn)的數(shù)據(jù)存儲方式,是數(shù)據(jù)計算中間件(DCM)成功實施的重要保障。
集算器組表采用列存方式存儲數(shù)據(jù),對于字段特別多的寬表查詢,性能提升特別明顯。組表采用的列存機(jī)制和常規(guī)列存是不同的。常規(guī)列存(比如 parquet 格式),只能分塊之后,再在塊內(nèi)列存,在做并行計算的時候是受限的。組表的可并行壓縮列存機(jī)制,采用倍增分段技術(shù),允許任意分段的并行計算,可以利用多 CPU 核的計算能力把硬盤的 IO 發(fā)揮到極致。
組表生成的時候,要指定維字段,數(shù)據(jù)本身是按照維字段有序存放的,常用的條件過濾計算不依賴索引也能保證高性能。文件采用壓縮存儲,減小在硬盤上占用的空間,讀取更快。由于采用了合適的壓縮比,解壓縮占用的 CPU 時間可以忽略不計。
組表也可以采取行存和全內(nèi)存存儲數(shù)據(jù),支持內(nèi)存數(shù)據(jù)庫方式運行。
敏捷的集群能力可以保證數(shù)據(jù)計算中間件(DCM)的高性能和高可用性。
集算器節(jié)點服務(wù)器是獨立進(jìn)程,可以接受集算器 JDBC 的計算請求并返回結(jié)果。對于并發(fā)訪問的情況,可以發(fā)給多個服務(wù)器同時計算,提高并發(fā)容量。對于單個大計算任務(wù)的情況,可以分成多個小任務(wù),發(fā)給多個服務(wù)器同時計算,起到大數(shù)據(jù)并行計算的作用。
集算器集群計算方案,具備敏捷的橫向擴(kuò)展能力,并發(fā)量或者數(shù)據(jù)量大時可以通過快速增加節(jié)點來解決。集算器集群也具備容錯能力,即有個別節(jié)點失效時還能確保整個集群能工作,計算任務(wù)能繼續(xù)執(zhí)行完畢,起到多機(jī)熱備和保證高可用性的作用。
作為數(shù)據(jù)計算中間件(DCM),集算器提供的后臺數(shù)據(jù)源可以支持各種前端應(yīng)用,不僅僅限于前端是多維分析的情況。例如:大屏展示、管理駕駛艙、實時報表、大數(shù)據(jù)量清單報表、報表批量訂閱等等。
集算器形成的后臺數(shù)據(jù)源也可以和數(shù)據(jù)庫、數(shù)據(jù)倉庫配合使用。集算器實現(xiàn)的數(shù)據(jù)計算網(wǎng)關(guān)和路由,可以在集算器緩存數(shù)據(jù)和數(shù)據(jù)倉庫之間智能切換,解決數(shù)據(jù)倉庫無法滿足性能要求的問題。例如:冷熱數(shù)據(jù)分開計算的場景。具體做法參見《集算器實現(xiàn)計算路由優(yōu)化 BI 后臺性能》。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。