中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

程序數據集上的多維分析

發布時間:2020-08-09 21:18:14 來源:ITPUB博客 閱讀:136 作者:rqgxy 欄目:編程語言

看到文章標題,顧名思義應該也曉得本篇文章的重點內容是要說啥了吧?

沒錯,就是想針對程序數據集上的多維分析嘮幾毛錢的!所謂程序數據集,是指數據源不是來自文件和SQL,而是由程序現計算出來的。這種情況在許多BI系統中都會出現,BI系統自己管理數據模型,把數據庫擋在后面,不會直接開放SQL,更不會提供文件讓你直接訪問,訪問數據都要通過程序接口(比如JavaAPI或Webservice)——這樣一來,想要對這些程序接口返回的結果集做多維分析看似就有些困難了。

小編我本著先客戶之憂而憂的服務宗旨,思前想后還是覺得之前的《 把 Excel 透視表搬到 WEB 上 》和《 給一句 SQL 就能做多維分析 》對多維分析的介紹不太夠,所以今天特地再來嘮嘮如何對程序數據集做多維分析。

 

訪問 JavaAPI

API是應用程序編程接口,程序開放API就是開放接口,開放后接口返回的程序數據就可以被其他程序調用了。

問題來了,在俺們多維分析中怎樣才能對API接口返回的程序數據做分析呢?

簡單,其實是分分鐘搞定的事兒!

步驟一:

最最重要的前提,要麻煩程序猿自定義類,把要返回的結果集封裝在一個靜態方法中

本例小編自己寫了個api,為方法傳入txt文件路徑,然后將txt內容以文本字符串返回。

test.txt 文件內容:

程序數據集上的多維分析

 

自定義類 TxtTest

package api;
import java.io.*; 
public class TxtTest {
		
		public static String readTxttoString(String pathName,boolean hasTitle)
	{
		final BufferedReader bfr;
		final String encoding = "gbk";
		final File file = new File(pathName);
		String lineTxt=null;
		StringBuffer buf = new StringBuffer();
		InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);
		bfr = new BufferedReader(read);
		while((lineTxt=bfr.readLine())!=null){
			buf.append(lineTxt+"\n");
				}		
		return buf.toString();		
	}
}

步驟二:

將TxtTest.class文件放入WEB應用能加裝到的類路徑下,本例以安裝包自帶的demo應用為例,因此該文件可放入[安裝根目錄]\report\web\webapps\demo\WEB-INF\classes\api下。

 

步驟三:

在集算器設計器中新建 txtTest.dfx,添加參數和網格內容:

程序數據集上的多維分析


A

1

=invoke(api.TxtTest.readTxttoString,pathName,hasTitle)

2

=A1.import@tq()

3

return A1

 

使用invoke函數,調用步驟一中自定義JAVA類中的靜態方法,并為方法傳入參數。 保存后將dfx文件放至[安裝根目錄]\report\web\webapps\demo\WEB-INF\files\dfx目錄下。至于為啥要把文件放到這兒,先賣個關子,后面再解釋。

集算器用的invoke函數主要是用來調用用戶自定義函數的,不僅能像上面例子這樣返回字符串,還可以返回其他多種類型,不過必須使用可與集算器匹配的數據類型,否則有可能在展現或調用時出現錯誤。集算器中常用數據類型對應的Java類型如下:

整數

java.lang.Integer

長整數

java.lang.Long

浮點數

java.lang.Double

長實數

java.math.BigInteger

實數

java.lang.Number

布爾型

java.lang.Boolean

字符串

java.lang.String

日期

java.sql.Date

時間

java.sql.Time

日期時間

java.sql.TimeStamp

二進制數據

byte []

 

步驟四:

多維分析中添加 dfx 文件數據集

程序數據集上的多維分析

數據集窗口大家一定都不陌生,多維分析與外部API之間的通道就是通過它指定DFX文件完成的。

選擇dfx文件時是不是發現步驟三中創建的dfx被列出來了,前因后果這下明白了吧,猜對了,這個列表默認就是把[安裝根目錄]\report\web\webapps\demo\WEB-INF\files\dfx這個目錄下的所有dfx列出。想要修改這個目錄路徑也是ok的,在 "[demo 應用根目錄]/raqsoft/guide/jsp/olap.jsp" 中添加 JS API 進行指定,如下圖所示:

程序數據集上的多維分析

選擇dfx文件,傳遞參數值,點擊 查詢數據,緩存入文件 保存,數據集就創建完成了!

 

接下來馬上又到了每日開心一刻了,任性拖拽無人阻攔,哈哈!

點擊【添加報表】,選擇數據集,填寫報表名稱【確定】

程序數據集上的多維分析

程序數據集上的多維分析

程序數據集上的多維分析

  

添加報表后,數據集返回的表結構指標就這樣赤裸裸的出來了,接下來就可以拖拖拽拽查看指標內容了。咋樣,有沒有發現其實這種調用JavaAPI的程序數據集也挺好使,只要先把自定義類做好就相當于完成一大半了,集算器dfx只是起到了個中間調用的作用。

程序數據集上的多維分析

API返回的程序數據不僅可以是txt文本串,還可以是json串。關于json串在多維分析的調用我們也有攻略幫您解決,其實很簡單,API里的內容由您自己做主,只要最終返回的是json串就行,這里主要就是變通一下步驟三dfx文件中對json串的處理。

dfx內容作如下修改:


A

1

=invoke(api.TxtTest.readTxttoString,pathName,hasTitle)

2

=json(A1)

3

return A2

 

訪問多維分析頁面,添加dfx文件類型的數據集。

 

程序數據集上的多維分析

程序數據集上的多維分析

聰明的你,看到這里應該什么都明白了吧?其實換湯不換藥,重點都在dfx文件上,只是API返回的類型不同,在dfx中處理方法不同罷了。

 

訪問 Webservice

提起Webservice一定都不陌生,一款跨編程語言和跨操作系統平臺的遠程調用技術。關于Webservice的使用原理小編就不班門弄斧在高手面前顯擺了,相信作為資深程序猿的您早已對它了如指掌了吧,哈哈

那在我們多維分析里是否能調用這種遠程接口呢?答案必須是肯定的,當然能!

我們已經做了全方位考量,不僅能調用JavaApi還能調用Webservice接口,方法和JavaApi的調用大致類同,具體是哪里相同哪里類同請看下例分曉。

下面以手機號碼歸屬地查詢作為示例,介紹對WebService的調用(本例使用的WebService服務是國內官方的手機號碼歸屬地查詢所在的服務):

步驟一:

在集算器設計器中新建 webTest.dfx,添加網格內容

 


A

B

C

1

=[18810690043,15207579527,13018617766, 13713309396,15810200987,13168889653, 13501321234,13003110868,13310006279, 13003113520,18718391001,13168889659]

//手機號


2

=ws_client("http://ws.webxml.com.cn/WebServices/ MobileCodeWS.asmx?WSDL")

//訪問國內手機號碼歸屬地查詢WEB服務


3

=create(手機號,省份,城市,卡類型)

//創建序表


4

for A1

//使用for循環,逐個查詢手機號的歸屬地等信息


5


=ws_call(A2,"MobileCodeWS":"MobileCodeWSSoap": "getMobileCodeInfo",A4:"mobileCode")

//傳入手機號,從服務器查詢手機號歸屬地

6


=B5.split@1(":")(2).split(" ").insert(1,A4)


7


=A3.record@i(B6,0)

//將查詢結果作為記錄插入A3序表中

8

return A3



 

保存后將 dfx 文件放至[安裝根目錄]\report\web\webapps\demo\WEB-INF\files\dfx目錄下。

步驟二:

多維分析中添加 dfx 文件數據集

選擇dfx文件,傳遞參數值,點擊 查詢數據,緩存入文件 保存,數據集就創建完成了!

程序數據集上的多維分析

dfx下拉列表里的文件是從哪里讀取的,還用小編再提一下嗎?嘻嘻,鞏固下記憶吧,這個列表默認就是把[安裝根目錄]\report\web\webapps\demo\WEB-INF\files\dfx這個目錄下的所有dfx列出。不過這個路徑也是可以修改的,修改方法和JavaApi里使用時的修改方法一樣。

數據集創建完成后,接下來就是拖拽指標進行分析了

點擊【添加報表】,選擇數據集,填寫報表名稱【確定】

程序數據集上的多維分析

程序數據集上的多維分析

程序數據集上的多維分析

將指標拖拽到右側數據顯示區,這樣一來,從WebService服務器獲取的手機歸屬地的信息就展現在我們眼前了,是不是很方便呢?

程序數據集上的多維分析

利用 Tag 標簽添加 dfx 數據集

上面兩種程序數據集在多維分析使用時都是通過界面數據集菜單配置的dfx數據集,其實還可以通過Tag標簽添加。

在Tag標簽的使用與之前講的SQL數據集大同小異,只是屬性略有不同。

Tag標簽添加dfx數據集:

<raqsoft:analysev2

dfxFile="WEB-INF/files/dfx/txtTest.dfx" //指定相對于web根目錄的dfx文件

dfxParams="pathName='D:/2.json';" //dfx所需的參數 … …

/>

在Tag標簽中添加dfx數據集,訪問多維分析頁面時會將該數據集默認作為初始數據集,并直接將結果集以明細的形式展現在頁面中。

程序數據集上的多維分析

 

叮叮叮,關于JavaApi和Webservice程序接口的訪問到此就介紹完了,通過對本篇文章的學習,一定更能領會我們多維分析的妙處了吧。使用dfx數據集訪問程序數據集是直接借用集算器函數輕松引入程序數據集結果,當然,除此之外還能利用集算器的計算能力,對程序數據集的結果做二次處理,最終在界面上做拖拽分組、聚合、過濾等等數據分析動作。

但是,我要說但是,這里都用到了集算器的腳本,而自寫腳本的功能是不包含在基本潤乾報表中的,也就是說需要花錢滴。嗯,聽起來有點悲傷,不過,認真關注乾學院,后面我們會主動提供辦法讓你繞過這個檢查,還是不花錢,一定要關注,不可錯過喲!

其實兩種程序接口類型在多維分析的使用中是有一定的共同點的,下圖就能直觀的讓我們看到區別: 

程序數據集上的多維分析

JavaAPI和WebService兩種程序數據集上的多維分析都是使用的dfx數據集,不同點是dfx文件中使用的函數不同,這是關鍵點!JavaApi時是先將程序接口進行封裝,然后在集算器中使用invoke函數調用自定義類。WebService時則是直接使用函數遠程訪問官方手機號碼歸屬地查詢所在的服務器獲取手機號歸屬地數據。

其實,如果想實現高性能還可以直接用二進制格式,但就需要學習集算器的數據類型及相關API了。此處就不過多介紹了。還是那句話,更多關于集算器的學習可參考幫助文檔《 函數參考 》、《 教程 》。

好了,本篇文章雖然講完了,但它卻已成為我們之間交友學習的開端,還在猶豫什么,快來加入乾學院吧,帶你了解更膩害的多維分析。


詳情鏈接: http://c.raqsoft.com.cn/article/1539249655403?r=gxy


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盖州市| 海宁市| 南昌市| 故城县| 葵青区| 芦溪县| 周口市| 石棉县| 射阳县| 本溪| 上犹县| 安吉县| 西林县| 遂平县| 苗栗市| 昌邑市| 诸城市| 湘乡市| 尚志市| 明水县| 启东市| 新建县| 昆山市| 营口市| 望江县| 西乌珠穆沁旗| 资源县| 松滋市| 高密市| 建阳市| 灵山县| 西乌珠穆沁旗| 苍梧县| 东乡县| 额尔古纳市| 论坛| 昭通市| 依兰县| 武功县| 遂川县| 玉龙|