ETHINK组件取值手册

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

posted @ 2019-09-06 09:45  九命猫幺  阅读(437)  评论(0编辑  收藏  举报