1. 概述
1.1 預期效果
能夠在 BI 中使用 StringCat 函式進行連接字串,例如要將「合同事實表」下的「合同ID」和「合同付款型別」連接成一個欄位,如下圖所示:
注:公式框中的函式、欄位都需要點選左側的選擇區域選擇,不能手動輸入。
1.2 實現思路
AbstractFunction 實現了 Function API,因此 StringCat 可以直接繼承 AbstractFunction 類。
使用函式 StringCat(Para,Para,Para…..) 時,根據函式名取得運算該函式的類 StringCat,並將參數傳入類中的 args 物件陣列中,執行該類的 run 函式。 而在 run 函式中即實現了將傳入的參數以字串的形式連結起來。並傳回最終形成的字串。
注:自訂函式定義規則、注意事項詳情參見:自訂函式簡介
1.3 函式簡介
函式 StringCat :作用是把所有的參數以字串的形式連結起來。
StringCat 函式使用規則為 StringCat(Para,Para,Para…….);其中 Para 為該函式的參數,個數不限。
2. 範例
2.1 編寫 Java 檔案
編寫StringCat.java, 函式代碼如下:
package com.fr.function;
import com.fr.script.AbstractFunction;
public class StringCat extends AbstractFunction {
public Object run(Object[] args) {
String result = "";
Object para;
for (int i = 0; i < args.length; i ) {
para = args[i];
result = para.toString();
}
return result;
}
}
2.2 編譯 class 檔案
2.2.1 編譯環境準備
詳情參見:編譯Java過程
2.2.2 生成 class 檔案
編譯 StringCat.java,生成類 StringCat.class 。
2.2.3 匯入 class 檔案
將編譯後的StringCat.class放到 FineBI 的安裝目錄%FineBI%\webapps\webroot\WEB-INF\classes\com\fr\function下,如下圖所示:
注:若 WEB-INF 下沒有對應目錄則建立即可。
2.3 使用自訂函式
重啟 FineBI後便可直接使用,使用方法與內建函式是相同的。
比如在新增計算指標中,其他函式下面可以看到之前自訂的函式 Stringcat,點選該函式可新增到公式中使用,如下圖所示:
將「合同事實表」下的「合同ID」和「合同付款型別」連接成一個欄位,輸入公式:StringCat(合同ID," ",合同付款型別),如下圖所示:
注:公式框中的函式、欄位都需要點選左側的選擇區域選擇,不能手動輸入。
2.5 效果查看
詳情參見本文 1.1 節。