下载Demo报表:  计算函数与公式demo.zip (注意:将zip文件解压缩后再进行导入)
下载Demo报表Excel:  计算函数与公式demo.xlsx 
-----------------------------------------------------------------------------------------------------------------------
下载 【行转列与列转行Demo】: 行转列与列转行Demo.zip
下载Excel: 行转列与列转行Demo.xlsx 

度量函数表达式描述
上周lastWeek(度量字段,日期字段)对应数据行日期上周的值
上月lastMonth(度量字段,日期字段)对应数据行日期上月的值
同期lastYear(度量字段,日期字段)对应数据行日期去年的值
周累计wtd(度量字段,日期字段)对应数据行日期周累计值
月累计mtd(度量字段,日期字段)对应数据行日期月累计值
上周累计lastWtd(度量字段,日期字段)对应数据行日期上周累计值
上月累计lastMtd(度量字段,日期字段)对应数据行日期上月累计值
同期月累计lastYearMtd(度量字段,日期字段)对应数据行日期去年的月累计值
年累计ytd(度量字段,日期字段)对应数据行日期的年累计值
同期年累计lastYearYtd(度量字段,日期字段)对应数据行日期去年的年累计值

以上度量函数表达式中均支持第三个可选参数:条件列; 不设置第三个参数,自动将所有维度作为条件列

第三个参数格式: columnA|columnB|columnC

 

 

度量函数表达式描述
月时间进度monthPassed(日期字段)本月已经过去了百分之多少(自然日)
年时间进度yearPassed(日期字段)本年已经过去了百分之多少(自然日)

 

 

维度函数表达式描述
序号 _id增加一个自增ID
时间月month(日期字段)获得月份
时间年year(日期字段)获得年份
时间日周week(日期字段)获得星期,例如:周一,周二
时间年周weekOfYear(日期字段,格式,偏移天数)

获得周数,例如:第10周
日期格式,例如:
%d周:35周
第%d周: 第35周 
W%d: W35 

偏移天数:周的其实星期,比如从周六开始计算,偏移为:+3 day

转成日期parseDate(字段名,yyyyMMdd)

将字符串或数字根据指定的格式转成日期
yyyy: 4位数字年
MM: 2位数字月
mm: 1位数字月
dd: 2位数字日
d: 1位数字日 
例如:
20160516 : yyyyMMdd  
2016/05/16: yyyy/MM/16 

行转列rowToColumn(行字段名, 行值, 列字段名)例如,以下2个表达式可以将【本期同期】中的2个值转成列
1.将字段【本期同期】中的行值“本期”与零售金额转成当前字段的值
rowToColumn(本期同期, "本期", 零售金额) 
2.将字段【本期同期】中的行值“同期”与零售金额转成当前字段的值
rowToColumn(本期同期, "同期", 零售金额)  
列转行columnToRow(行值A:源字段A1#目标字段A1|源字段B1#目标字段B1)例如:

1. 将多个指标列转成【KPI项】中的行
columnToRow(
零售金额:本期金额#本期值|同期金额#同期值,
零售总数量:本期数量#本期值|同期数量#同期值
)

分组合计groupSum(指标字段, 分组字段A|分组字段B)

例如:

1.统计各部门人数
groupSum(在职状态度量,部门维度)

2. 按大区和本期来合计
groupSum(零售金额,大区|本期同期) where 本期同期='本期' 

自定义在进行周或月的汇总时,
总工位数或月度目标这样的指标不应该被汇总,
而是最后一天的值
( 
select 总工位数 from (
SELECT * 
FROM 工位出租 
GROUP BY 周,日期类别,省份,场区
HAVING MAX(日期)
) t2 where 
t2.日期=工位出租.日期 
and t2.省份=工位出租.省份 
and t2.日期类别=工位出租.日期类别 
and t2.周=工位出租.周 and t2.场区=工位出租.场区
)
运算函数公式描述
计算占比{度量A}/total({度量A})对应数据行度量A占合计的百分比
计算完成率{度量A}/{度量B}对应数据行度量A占度量B的比例
计算同比或环比({度量A}-{去年度量A})/{去年度量A}对应数据行度量A较上期值的增长比率
去重计数

countDistinct({维度A去重},度量B计数=1)

例如:
countDistinct({店铺档案编号},销售网点=1)

 对维度「店铺档案编」进行去重计数,但是只有「销售网点=1」的记录才参与计数

select 月份,sum(数量) as 数量 ,
( select sum(数量) from workbook1 t2 where t2.月份||'-01'=date(t1.月份||'-01','-1 month') ) as 上月数量
from workbook1 t1 group by 月份

(select sum(纯收入) from 测试数据 A where A.省份=测试数据.省份 and A.周=printf('%d周', case when cast(strftime('%j', 测试数据.日期) as int) > 300 and cast(strftime('%W', date(测试数据.日期,'+2 day', 'localtime')) as int) < 2 then '53' else strftime('%W', date(测试数据.日期,'+2 day', 'localtime')) end -1 ) )

(注:本例中的周计算是按本周六至下周五算一周)