反饋已提交

網絡繁忙

資料集函式概述

1. 概述

1.1 應用場景

將資料集中的資料欄直接拖曳到儲存格中使用時,如果想要「條件顯示」某些資料欄的值,那麼可以使用資料集函式。

1.2 注意事項

1)參數面板中不支援使用。

2)不支援模擬計算,模擬計算詳情參見:2.4節

3)決策報表填報事件不支援使用資料集函式。

2. tablename.select

1)概述

文法
tablename.select(colname,篩選條件1&&篩選條件2&&......)

篩選出資料集某列中符合條件的資料,傳回結果是一個陣列,相同資料不會合併

注:當僅傳回一筆資料時,資料型別是「字串」而不是陣列。

參數1tablename

表示資料集名稱,注意是「報表資料集」或者是「伺服器資料集」名,而非資料庫中的表名

注:資料集名稱盡量使用純中文/純英文,不要使用數字或特殊符号,否則函式可能失效。

參數2colname

表示列名,不區分大小寫

注:若欄名爲中英數字混合,建議加上引号,确保正确讀取。例如ds1.select("1月產品名稱")

2)注意事項

  • 篩選條件中的判斷既可以使用單等號,也可以使用雙等號;

  • 字串也同時可以使用單引號或者是雙引號,對結果均沒有影響;

  • tablename.select() 與 sql() 的差別主要在於 tablename.select() 是從資料集取數,sql() 是從資料庫取數,不需要先定義一個資料集。詳情參見 SQL 函式

  • 在公式中,以 0 開頭的字串在匹配判斷時,例如:ds1.select(colname,ID="003") 結果會傳回對應 ID 為 0、03、003…… 的結果。若只希望傳回 003 ,可以使用 EXACT 來做匹配判斷。例如:ds1.select(colname,exact(ID,"003"))

  • 如果想要進行模糊查詢,可透過與 Find 函式 巢實現,例如公式:ds1.select(產品名稱,FIND("蘋果",產品名稱)!=0),如下圖所示:

3)範例

例如資料集 ds1 取出內建 FRDemo 資料庫中的「S產品」表,分別在儲存格中輸入以下公式:

公式
結果
在 A2 儲存格中輸入=ds1.select(產品名稱)

傳回資料集 ds1 產品名稱列中的所有產品名稱。

在 B2 儲存格中輸入=ds1.select(產品名稱,庫存量>20

傳回資料集 ds1 庫存量大於 20 且訂購量大於 30 的產品。

在 C2 儲存格中輸入=ds1.select(產品名稱,供應商="1"||庫存量>30)

傳回資料集 ds1 供應商為1或者庫存量大於 30 的產品。

3. tablename.group

1)概述

文法
tablename.group(colname,篩選條件 1 && 篩選條件 2,升降序)篩選出資料集某列中符合條件的資料,若相鄰資料相同則進行合併,還可以按照該列進行升降冪排列。
參數1tablename表示資料集名稱,注意是「報表資料集」或者是「伺服器資料集」名,而非資料庫中的表名
參數2colname表示列名,不區分大小寫。
參數3升降冪

為布爾值,true 表示升冪,false 表示降冪。

注:若使用升降冪參數,那麼必須寫篩選條件參數,若沒有篩選條件,可以用 true 或者空格代替:例如=ds1.group(銷售員,true,false)或者=ds1.group(銷售員, ,false)

2)範例

如資料集 ds1 取出內建 FRDemo 資料庫中的「銷量」表:

公式說明
在儲存格中輸入=ds1.group(銷售員)傳回資料集 ds1 銷售員列中的值,並且相鄰資料若相同會進行合併
在儲存格中輸入=ds1.group(銷售員,地區 = "華東")

傳回資料集 ds1 華東地區銷售總額超過 200 的銷售員,並且相鄰資料若相同會進行合併。

在儲存格中輸入=ds1.group(銷售員,true,false)=ds1.group(銷售員,,false)

傳回資料集 ds1 銷售員列中的值,並且其中只要資料相同就會進行合併,結果為降冪排列,中間的參數為過濾條件,若沒有條件,可以用空替代或者使用 true 。

在儲存格中輸入=ds1.group(銷售員,地區=="華東")

傳回資料集 ds1 華東地區的銷售員,並且相鄰資料若相同會進行合併。

在儲存格中輸入=ds1.group(銷售員,地區=="華東",true)傳回資料集 ds1 華東地區的銷售員,並且會合併所有相同項,結果為升冪排列。

4. tablename.select(#數字)

1)概述

文法
tablename.select(#數字)傳回資料集中的行號或者對應列資料
參數1tablename表示資料集名稱,注意是「報表資料集」或者是「伺服器資料集」名,而非資料庫中的表名
參數2數字

表示列號。

如果tablename.select(#0)則匯出資料表行號陣列(資料條數)

tablename.select(#1)則匯出資料庫表中第一欄的陣列資料

2)注意事項

  • 填報場景下 ds1.select(#0) 這個公式如果聯動計算有異常,需要檢查父子格關系。例如出現下圖所示的計算結果時:

  • remoteEvaluate(String) 方法不支援 tablename.select 函式。

3)範例

例如資料集 ds1 取出內建 FRDemo 資料庫中的「銷量」表:

公式結果
在儲存格中輸入=ds1.select(#0)

傳回資料集中的行號

在儲存格中輸入=ds1.select(#1)

傳回資料集中對應列資料

5. tablename.value(row,col/colname)

1)概述

文法
tablename.value(row,col/colname)獲取資料集 ds1 中某行某列的值。
參數1tablename表示資料集名稱,注意是「報表資料集」或者是「伺服器資料集」名,而非資料庫中的表名
參數2row

表示行號

參數3col/colname表示列號或者列名

2)注意事項

  • 報表的圖表標題不支援該函式。

  • 決策報表裏的圖表塊不支援該函式。

  • JavaScript 中不支援該函式。

3)範例

例如資料集 ds1 取出內建 FRDemo 資料庫中的「銷量」表:

公式
說明
在儲存格中輸入=ds1.value(3,2)傳回資料集 ds1 中第 3 行第 2 列的值
在儲存格中輸入=ds1.value(3,"銷售員")傳回資料集 ds1 中第 3 行銷售員列的值

6. 應用

6.1 根據不同條件選擇使用哪個欄位

在儲存格中輸入如下公式:

=if(條件,ds1.group(customerid),ds2.group(customerid))

並設定其擴展屬性為從上到下。

公式說明:

公式說明
=if(條件,ds1.group(customerid),ds2.group(customerid))

條件為真,儲存格使用資料集 ds1 中的 customerid 列,否則使用 ds2 中的 customerid 列 。


6.2 對資料集函式傳回的資料再進行運算

在儲存格輸入公式=sum(ds1.select(銷量)),傳回資料集 ds1 銷量列的總和。

sum 求和公式也可以換用其他如 count、max 等。

7. 注意事項

7.1 資料集函式傳回的資料進行擴展

直接將資料列拖曳到儲存格時會自動從上到下擴展。但是使用資料集函式獲得資料為一個陣列,是顯示在一個儲存格中的,需要另外給儲存格設定擴展屬性,資料才會進行擴展。

例如在儲存格輸入公式=ds1.group(銷售員,地區=="華東",true),設定擴展房方向為「縱向」,如下圖所示:

預覽報表如下圖所示:

附件列表


主題: 報表專題
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙