Ethink組件取值手冊一、取值Sql查詢配置中取值方式:所有可以對外過濾的組件都可以用id.output取值 就是取組件setOutput()里輸出的值 ,具體分為以下兩種:1)$p{OBJ_1.output}—用於sql語句中根據值的類型加引號 如:’安徽’2)$p[OBJ_1.output]—... ...
Ethink組件取值手冊
一、取值
Sql查詢配置中取值方式:所有可以對外過濾的組件都可以用id.output取值 就是取組件setOutput()里輸出的值 ,具體分為以下兩種:
1)$p{OBJ_1.output}—用於sql語句中根據值的類型加引號 如:’安徽’
2)$p[OBJ_1.output]—用於sql語句中 不加任何引號直接把值顯示替換 如: 安徽
3)$w[userId] 從session里取得登陸的信息
其他的取值方式主要根據每個組件具體提供的取值方法來決定了,
比如 文本框 $p{textbox[displayvalue]}
下拉列表可以用 $p{OBJ_ID[selected]}取選中的顯示值,’安徽’
$p{OBJ_ID[selected[key]]}取選中的過濾值 ’34’
具體每個組件的取值方式大體如下(註:要加$p):
1.文本框、標簽 的取值方式:
$p{OBJ_ID[displayvalue]} 如: ‘123’
2.下拉列表 :
取選中項的顯示值:{OBJ_ID[selected]},如:’2010年’
取選中項的過濾值: {OBJ_ID[selected[key]]} 如:’2010′
3.樹 :如:當前選中的是 ‘2010年’ 下的’02月’ 並且’2010年’ 對應的過濾值是’2010′ ,’02月’ 對應的過濾值就是 ’02月’
取選中項的顯示值:{OBJ_ID[selected]},為:’02月’
取選中項的過濾值: {OBJ_ID[selected[key]]} 為:’02月’
取第幾層的過濾值:{OBJ_ID[0_levelValue} 為:’2010′
取選中的層次號,從0開始 :{OBJ_ID[selectedLevel} 為:’1′
下一層次號:{OBJ_ID[selectedNextLevel}如果當前就是最後一層了 還是他自己 為:’1′
4.單選框組
取選中項的顯示值:{OBJ_ID[selected]},如:’2010年’
取選中項的過濾值: {OBJ_ID[selected[key]]} 如:’2010′
5.覆選框組(如果選中了多個值,只能取到第一個)
取選中項的diyi顯示值:{OBJ_ID[selected]},如:’2010年’
取選中項的過濾值: {OBJ_ID[selected[key]]} 如:’2010′
6.表格及矩陣取值參數:—-均從零開始
{OBJ_ID[row[r1;r2]]}–r1、r2:行號 {OBJ_1[row[1;3]]}–取表格第1行到第3行
{OBJ_ID[col[c1;c3]]}–c1、c3:列號 {OBJ_1[col[1;3]]}–取表格第1列到第3列
{OBJ_ID[range[sr;er;sc;ec]}–sr:起始行;er:終止行;sc:起始列;ec:終止列 {OBJ_1[range[1;3;3;3]]}–取表格第1行到第3行並且介於第3列上
{OBJ_ID[head[h1;h2]]}–h1、h2:表頭號 {OBJ_1[head[1;2;3]]}–取第1列表頭,第2列表頭,第3列表頭
{OBJ_ID[currentRow[c1~]]}–c1:滑鼠點擊的當前列號 {OBJ_1[currentRow[1~]]}–取選中行的第1列到最後
{OBJ_ID[cell[r1;c1]]}–r1:行號;c1:列號 {OBJ_1[cell[1;3]]}– 取表格第1行第3列上的真實數據
_displayvalue取界面格式化後的值
例如:{OBJ_ID[cell_displayvalue[r1;c1]]} 即 {組件0[cell_displayvalue[0;2]]} 如果是在sql語句里或者圖文控制項里就要加上$p 即$p{組件0[cell_displayvalue[0;2]]}
如:{OBJ_1[cell[10;column.$p{OBJ_2.output}]]}–根據語義取值 column.$p{OBJ_2.output}–根據列名確定列號
7、語義
1).union_h//左右合併 簡寫為:|
2).union_v//上下合併 簡寫為:-
3).forcol//變成一列
4).forrow//變成一行
5).bycol//轉置 簡寫為:@
如:{componentId[head[1~]]} union_v {componentId[col[1]]} union_v {componentId[range[1;~;1~]]}
{componentId[head[1~]]} union_v ({componentId[col[1]]} union_h {componentId[range[1;~;1~]]})
//row,col,range,head,cell,currentRow,currentCol後面都可以隨便加forcol,forrow,bycol中的任何一個,即可以對數據進行再加工,比如,變成一列,變成一行,轉置
例如:{OBJ_ID[rowforcol[1]]} 就是取第一行數據 變成一列
8.計算列
=Fields!銷售量.Value/Fields!零售客戶數.Value
9.fetch first 15 rows only —db2取前15條記錄
二、組件本身調用的常用函數
1.執行sql查詢語句
OBJ_1.executeSQL(sql);
2.動態的增加一列
OBJ_1.addColumn(data,”MyLabel”,”結果”,null);
public void addColumn(Object columndata,String componenttype,String columnHeadName,Object places)
@param columndata 要增加列里的數據
@param componenttype 要增加列里的組件的類型,如沒有設置則預設為MyLabel
@param columnHeadName 要增加列的列頭的名字
@param places 要增加在表格的什麼位置,如沒有設置則增加在最後
隱藏列
分組表隱藏列:
組件X.getTablixGrid().getColumns().getChildren().get(1).setVisible(false);
OBJ_3.getColumns().getChildren().get(0).setWidth(“0px”);
3.給組件賦值
(1) OBJ_ID.setDataToComponent(Object[][] data );
@param data 賦值的數據
(2) OBJ_ID.setComponentsValue(String location,Object[][] data,Boolean flag);
@param location 需賦值的組件–如:“{OBJ_1[col[0]]}”
@param data 賦值的數據
@param flag 一般值為false
如:Object[][] value93=OBJ_93.getComponentValue(“range[0;5;3;5]”);
BJ_93.setComponentsValue(“OBJ_50,OBJ_49,OBJ_51, OBJ_56,OBJ_43,OBJ_55, OBJ_58,OBJ_42,OBJ_57, OBJ_84,OBJ_83,OBJ_86, OBJ_81,OBJ_80,OBJ_82, OBJ_78,OBJ_76,OBJ_79”, value93,false);
(3) OBJ_ID.fillData(Object[] heads,Object[][] data,boolean dataIncludeHeads)
@param heads 表頭名
@param data 賦值的數據
@param dataIncludeHeads 是否更改表頭名
4.設置組件最大值
OBJ_10.setComponentsMaxValue(String components,Object[][] maxValues,Boolean flag);
@param components 需要設最大值的組件,可以多個
@param maxValues 最大值
@param flag 預設false
5.添加列
Object[][] coldata=StaticFunction.sumToTarget(“col”,”{OBJ_5[col[0]]}/{OBJ_6[col[0]]}”,OBJ_13);
OBJ_13.fillDataGrid(new Object[]{“平均補貼金”},coldata,false);
7.在組件上添加組件
this.insertBefore(this.getFirstChild(), frozen);
8.設置tomcat記憶體
set JAVA_OPTS=-Xms450m -Xmx450m
三、圖表參數
formatNumberScale:0;用K來代表千,M來代表百萬
bgColor:背景顏色—FFFFFF
chartRightMargin:28;圖表右邊距
palette:3;調色版
legendPosition:RIGHT; 標註位置
showvalues:0;顯示數據
shownames:0;不顯示名稱
decimalPrecision:2; 十進位的精度
showBorder:0;顯示圖表邊
baseFontSize:12;字體大小
baseFontColor:000000 字體顏色
bgAlpha:0;背景透明度
renderAs:Line;兩個value中一個用折線顯示
useRoundEdges:1;邊緣圓滑
legendBorderAlpha:1;
color:000000,1EB400,D22D00,F01EF0,87F000;點、線顏色設置
lineAlpha:100;線條透明度
Hbullet –line:100
圖表類型中HBullet以上是一個或兩個值可完成,Ms開頭以上的是二維,Ms開頭以下的是三維或多維
函數:
1.Dataset data()
從單元格上取出原始數據集
2.Dataset group(String expression,Dataset data)
expression參數:rowgroup,rowgroup.0,…,rowgroup.child,{維度.列名},{列名},rowgroup-數字,columngroup,columngroup.0,…,columngroup.child,columngroup-數字
單元格上的數據集根據指定列再分組
3.Dataset smallchart(String express,Dataset data)
把數據集的數據以字元串形式返回
4.Dataset where(String expression, String opera, Object value, Dataset data)
遍曆數據集,判斷每一條記錄是否expression,opera,value給出的條件
5.Dataset rows (String groupColumn)
取在當前分組下按groupColumn分組的數據
6.Dataset sum (String expression, Dataset data)
數據集進行sum聚合
7.Dataset max (String expression, Dataset data)
數據集進行avg聚合
8.Dataset min (String expression, Dataset data)
數據集進行avg聚合
9.Dataset avg (String expression, Dataset data)
數據集進行avg聚合
10.Dataset count (String distinct, String expression, Dataset data)
數據集進行avg聚合
11.Dataset single (String expression, Dataset data)
取數據集中第一條記錄的expression列值
12.Dataset biif(Boolean condition, Object thenValue, Object elseValue)
condition 為 true 返回 thenValue 否則返回elseValue
13.Object value(String express, Dataset data)
根據express從數據集中取出計算結果
14.String bicase(String express)
拼資料庫中的case語句
例子:
對”收入”求sum: =value(“{收入}”,sum(“{收入}”,data()))
對”利潤(收入-支出)” 求sum: =value(“{收入}-{支出}”,sum(“{收入}-{支出}”,data()))
=value(“{收入}”,sum(“{收入}”,data()))-value(“{支出}”,sum(“{支出}”,data()))
預警
收入> 500 顯示 “紅色” ,收入<200 顯示 “黃色”,否則 顯示 “綠色”
=value(“”,biif(value(“{收入}”,sum(“{收入}”,data()))>500,”紅色”,biif(value(“{收入}”,sum(“{收入}”,data()))<200,”黃色”,”綠色”)))
=value(“”,biif(value(“{收入}”,single(“{收入}”,data()))>500,”紅色”,biif(value(“{收入}”,single((“{收入}”,data()))<200,”黃色”,”綠色”)))
小圖:
=value(“{本月}”,smallchart(“{本月}”,sum(“{本月}”,group(“{所屬年份};{所屬月份}”,data()))))
=value(“{本月}”,smallchart(“{本月}”,sum(“{本月}”,group(“{所屬年份}”,data())))) ^
若是關係數據 則為 {年}
同期
=value(“{補貼資金}”,sum(“{補貼資金}”,where(“{年}”,”==”,2010,data())))
=value(“{補貼資金}”,sum(“{補貼資金}”,where(“{年}”,”==”,2009,data())))
=value(“{本月}”,smallchart(“{本月}”,sum(“{本月}”,group(“{所屬月份}”,data()))))
=value(“{本月}”,smallchart(“{本月}”,sum(“{本月}”,group(“{所屬年份};{所屬月份}”,data()))))
=value(“{本年本月止累計}”,smallchart(“{本年本月止累計}”,sum(“{本年本月止累計}”,group(“{所屬年份};{所屬月份}”,data()))))
=value(“{本月比上年同月增長%}”,smallchart(“{本月比上年同月增長%}”,sum(“{本月比上年同月增長%}”,group(“{所屬年份};{所屬月份}”,data()))))
=value(“{累計比上年同期增長%}”,smallchart(“{累計比上年同期增長%}”,sum(“{累計比上年同期增長%}”,group(“{所屬年份};{所屬月份}”,data()))))
表達式手冊
表達式手冊
一、聲明:
1.表達式語法需符合java語法。
2.表達式大小寫敏感。
3.分組參數。
關係數據: {分組列名}
OLAP: {維度顯示名.分組列名}
關係數據或OLAP:
rowgroup.數字 表格行組的第幾層分組
rowgroup.child 表格行組的最後一個分組的孩子分組
rowgroup-數字 表格行組的最後一個分組的前幾個分組
rowgroup 表格行組的最後一個分組
columngroup 表格列組的最後一個分組
columngroup.數字 表格列組的前幾個分組
columngroup.child 表格列組的最後一個分組的孩子分組
columngroup-數字 表格列組的最後一個分組向前推幾個分組
total 全集
columntotal 按列分組
rowtotal 按行分組
4.時間模式字母定義
字母 日期或時間元素 表示 示例
G Era 標誌符 Text AD
y 年 Year 1996;96
M 年中的月份 Month July; Jul; 07
w 年中的周數 Number 27
W 月份中的周數 Number 2
D 年中的天數 Number 189
d 月份中的天數 Number 10
F 月份中的星期 Number 2
E 星期中的天數 Text Tuesday; Tue
a Am/pm 標記 Text PM
H 一天中的小時數(0-23) Number 0
k 一天中的小時數(1-24) Number 24
K am/pm 中的小時數(0-11) Number 0
h am/pm 中的小時數(1-12) Number 12
m 小時中的分鐘數 Number 30
s 分鐘中的秒數 Number 55
S 毫秒數 Number 978
z 時區 General time zone Pacific Standard Time; PST; GMT-08:00
Z 時區 RFC 822 time zone -0800
模式字母通常是重覆的,其數量確定其精確表示:
Text: 對於格式化來說,如果模式字母的數量大於或等於 4,則使用完全形式;否則,在可用的情況下使用短形式或縮寫形式。對於分析來說,兩種形式都是可接受的,與模式字母的數量無關。
Number: 對於格式化來說,模式字母的數量是最小的數位,如果數位不夠,則用 0 填充以達到此數量。對於分析來說,模式字母的數量被忽略,除非必須分開兩個相鄰欄位。
Year: 對於格式化來說,如果模式字母的數量為 2,則年份截取為 2 位數,否則將年份解釋為 number。
對於分析來說,如果模式字母的數量大於 2,則年份照字面意義進行解釋,而不管數位是多少。因此使用模式 “MM/dd/yyyy”,將 “01/11/12″ 分析為公元 12 年 1 月 11 日。
在分析縮寫年份模式(”y” 或 “yy”)時,SimpleDateFormat 必須相對於某個世紀來解釋縮寫的年份。這通過將日期調整為 SimpleDateFormat 實例創建之前的 80 年和之後 20 年範圍內來完成。例如,在 “MM/dd/yy” 模式下,如果 SimpleDateFormat 實例是在 1997 年 1 月 1 日創建的,則字元串 “01/11/12” 將被解釋為 2012 年 1 月 11 日,而字元串 “05/04/64″ 將被解釋為 1964 年 5 月 4 日。在分析時,只有恰好由兩位數字組成的字元串(如 Character.isDigit(char) 所定義的)被分析為預設的世紀。其他任何數字字元串將照字面意義進行解釋,例如單數字字元串,3 個或更多數字組成的字元串,或者不都是數字的兩位數字字元串(例如”-1″)。因此,在相同的模式下, “01/02/3” 或 “01/02/003″ 解釋為公元 3 年 1 月 2 日。同樣,”01/02/-3″ 分析為公元前 4 年 1 月 2 日。
Month: 如果模式字母的數量為 3 或大於 3,則將月份解釋為 text;否則解釋為 number。
General time zone: 如果時區有名稱,則將它們解釋為 text。對於表示 GMT 偏移值的時區,使用以下語法:
GMTOffsetTimeZone:
GMT Sign Hours : Minutes
Sign: one of
+ –
Hours:
Digit
Digit Digit
Minutes:
Digit Digit
Digit: one of
0 1 2 3 4 5 6 7 8 9Hours 必須在 0 到 23 之間,Minutes 必須在 00 到 59 之間。格式是與語言環境無關的,並且數字必須取自 Unicode 標準的 Basic Latin 塊。
對於分析來說,RFC 822 time zones 也是可接受的。
RFC 822 time zone: 對於格式化來說,使用 RFC 822 4-digit 時區格式:
RFC822TimeZone:
Sign TwoDigitHours Minutes
TwoDigitHours:
Digit DigitTwoDigitHours 必須在 00 和 23 之間
例如:”2010年”的時間模式為:”yyyy年”、”01月”的時間模式為:”MM月”、”1天”的時間模式為:”d天” 等等
二、函數
sum函數:支持多條件過濾、取組外數據、多列聚合、外界傳入數據集
Number sum(String columns)
Number sum(String columns,String groups)
Number sum(String columns,String filterColumn,String opera,Object value)
Number sum(String columns,String filterColumns,String opera,List values)
Number sum(String columns,String groups,String filterColumns,String opera,List values)
Number sum(String columns,String filterColumns,String opera,List values,Dataset data)
Number sum(String columns,String groups,String filterColumns,String opera,List values,Dataset data)
sum參數說明:
columns:需要sum聚合的列,多個列名用”,”隔開。
groups:需要取其他哪個分組下的數據,多個列名用”,”隔開。
filterColumns:過濾列。多個過濾條件之間的 “and”、”or”關係,通過列名與列名之間用”&”、”|”來表示。
opera:關係運算符。多個運算符用”,”號隔開。
values:多個過濾值用List傳入。
value:單個過濾值
—————————
avg函數:支持多條件過濾、取組外數據、多列聚合、外界傳入數據集
Number avg(String columns)
Number avg(String columns,String groups)
Number avg(String columns,String filterColumn,String opera,Object value)
Number avg(String columns,String filterColumns,String opera,List values)
Number avg(String columns,String groups,String filterColumns,String opera,List values)
Number avg(String columns,String filterColumns,String opera,List values,Dataset data)
Number avg(String columns,String groups,String filterColumns,String opera,List values,Dataset data)
avg參數說明:
columns:需要avg聚合的列,多個列名用”,”隔開。
groups:需要取其他哪個分組下的數據,多個列名用”,”隔開。
filterColumns:過濾列。多個過濾條件之間的 “and”、”or”關係,通過列名與列名之間用”&”、”|”來表示。
opera:關係運算符,多個運算符用”,”號隔開。
values:多個過濾值用List傳入。
value:單個過濾值。
data:外界傳入數據集
—————————
max函數:支持多條件過濾、取組外數據、多列聚合、外界傳入數據集
Number max(String columns)
Number max(String columns,String groups)
Number max(String columns,String filterColumn,String opera,Object value)
Number max(String columns,String filterColumns,String opera,List values)
Number max(String columns,String groups,String filterColumns,String opera,List values)
Number max(String columns,String filterColumns,String opera,List values,Dataset data)
Number max(String columns,String groups,String filterColumns,String opera,List values,Dataset data)
max參數說明:
columns:需要max聚合的列,多個列名用”,”隔開。
groups:需要取其他哪個分組下的數據,多個列名用”,”隔開。
filterColumns:過濾列。多個過濾條件之間的 “and”、”or”關係,通過列名與列名之間用”&”、”|”來表示。
opera:關係運算符,多個運算符用”,”號隔開。
values:多個過濾值用List傳入。
value:單個過濾值。
data:外界傳入數據集
——————————-
min函數:支持多條件過濾、取組外數據、多列聚合、外界傳入數據集
Number min(String columns)
Number min(String columns,String groups)
Number min(String columns,String filterColumn,String opera,Object value)
Number min(String columns,String filterColumns,String opera,List values)
Number min(String columns,String groups,String filterColumns,String opera,List values)
Number min(String columns,String filterColumns,String opera,List values,Dataset data)
Number min(String columns,String groups,String filterColumns,String opera,List values,Dataset data)
min參數說明:
columns:需要min聚合的列,多個列名用”,”隔開。
groups:需要取其他哪個分組下的數據,多個列名用”,”隔開。
filterColumns:過濾列。多個過濾條件之間的 “and”、”or”關係,通過列名與列名之間用”&”、”|”來表示。
opera:關係運算符,多個運算符用”,”號隔開。
values:多個過濾值用List傳入。
value:單個過濾值。
data:外界傳入數據集
——————————
count函數:支持去重、多條件過濾、取組外數據、多列聚合、外界傳入數據集
Number count(String distinict,String columns)
Number count(String distinict,String columns,String groups)
Number count(String distinict,String columns,String filterColumn,String opera,Object value)
Number count(String distinict,String columns,String filterColumns,String opera,List values)
Number count(String distinict,String columns,String groups,String filterColumns,String opera,List values)
Number count(String distinict,String columns,String filterColumns,String opera,List values,Dataset data)
Number count(String distinict,String columns,String groups,String filterColumns,String opera,List values,Dataset data)
count參數說明:
distinct:去重則輸入”distinct”字元串,否則輸入””空字元
columns:需要count聚合的列,多個列名用”,”隔開。
groups:需要取其他哪個分組下的數據,多個列名用”,”隔開。
filterColumns:過濾列。多個過濾條件之間的 “and”、”or”關係,通過列名與列名之間用”&”、”|”來表示。
opera:關係運算符,多個運算符用”,”號隔開。
values:多個過濾值用List傳入。
value:單個過濾值。
data:外界傳入數據集
———————————
single函數:取對應列中的單值
Object single(String columns)
columns:需要取單值的列,多個列名用”,”隔開。
———————————-
smallchart函數:畫微型圖函數。支持去重、多條件過濾、再次分組數據、多列聚合
String smallchart(String groups,String aggregation,String columns)
String smallchart(String groups,String aggregation,String columns,String filtercolumns,String opera,Object values)
String smallchart(String groups,String aggregation,String columns,String filterColumns,String opera,List values)
參數說明:
groups:數據再次分組,多個列名用”,”隔開。詳細參數分組配置參數
aggregation:聚合類型,包括sum、avg、max、min、count、count_distinct。
columns:畫小圖的數據,多個列名用”,”隔開。
filterColumns:過濾列。多個過濾條件之間的 “and”、”or”關係,通過列名與列名之間用”&”、”|”來表示。
opera:關係運算符,多個運算符用”,”號隔開。
values:多個過濾值用List傳入。
value:單個過濾值。
———————————
iif函數:條件判斷
Object iif(Boolean condition, Object thenValue, Object elseValue)
thenValue:condition為true時返回的值
elseValue:condition為false時返回的值
————————————-
formatmax函數:同期類實現的函數。非MQL要提供計算出的時間的數據,如計算同期時,非MQL要自己查出同期的數據。
List formatmax(String column,String todate,String tochar,String interval,int units)
columns:本期時間的列名,多列之間用‘||’拼接
todate:格式化成日期的時間模式
tochar:格式化成字元串的時間模式
interval: 計算的目標。參數為:”年”、”year”、”月”、”month”、”周”、”week”、”天”、”day”、”時”、”hour”、”分”、”minute”、”秒”、”second”
units:計算的步長
若轉成日期和字元串的時間模式相同,可調List formatmax(String column,String todate_tochar,String interval,int units)
——————————————————————-
三、函數表達式用例:
若 ”年度“為”2011“…,“月份”為“01“,”02“… 則樣式為”yyyy||MM“
若 ”年度“為”2011年“…,“月份”為“1“,”2“…”12“ 則樣式為”yyyy年||M“
…
同期:=sum(“{清冊金額}”,”{時間(清冊).年}”,”=”,formatmax(“{時間(清冊).年}”,”yyyy年”,”年”,-1))
上月:
=sum(“{發放金額}”,”{年度}&{月份}”,”=,=”,formatmax(“{年度}||{月份}”,”yyyy||M”,”月”,-1))
占比:=sum(“{補貼資金}”)/sum(“{補貼資金}”,”{地區.省}”)*100 … =sum(“{補貼資金}”)/sum(“{補貼資金}”,”total”)*100
求和:=sum(“{補貼資金}”)
求平均:=avg(“{補貼資金}”)
最大值:=max(“{補貼資金}”)
最小值:=min(“{補貼資金}”)
計數:=count(“distinct”,”{市}”)
小圖:=smallchart(“columngroup”,”sum”,”{補貼資金}”)
進度條:=smallchart(“columngroup”,”sum”,”{實際收入},{計劃收入}”)
…
預警:=iif(sum(“{補貼資金}”)>10000000,iif(sum(“{補貼資金}”)>20000000,”圖片1″,”圖片2″),”圖片3″)
累計:
年累計:=sum(“{發放金額}”,”{年度}&{月份}”,”=,<=”,formatmax(“{年度}||{月份}”,”yyyy||M”,”月”,0))
sql server
開發版(Developer): PTTFM-X467G-P7RH2-3Q6CG-4DMYB
企業版(Enterprise): JD8Y6-HQG69-P9H84-XDTPG-34MBB