V5.0.1@公式列表

来自DataFocus资料库
跳到导航 跳到搜索

公式列表

下面各种公式列表,主要是运用在搜索功能模块的公式列添加、公式搜索以及在系统管理模块的公式编辑。

样例中,公式括号里的内容为属性列名、数值列名、数字、字符串等,字符串的输入需加英文引号。

聚合公式

表 12-1 聚合公式表
公式 说明 样例
average 求度量的平均值 average(销售数量)
count 返回指定列的行数 count(产品名称)
max 求度量的最大值 max (销售数量)
min 求度量的最小值 min (销售数量)
stddev 求度量的标准差 stddev (销售数量)
sum 对度量求和 sum (销售数量)
unique_count 对属性或者度量进行非重复计数 unique count (产品名称)
variance 求度量的方差 variance(销售价格)
sum_if 按条件求和 sum_if(进货价格>8,销售数量)
average_if 按条件求平均值 average_if(进货价格>8,销售数量)
variance_if 按条件求均方差 variance_if(进货价格>8,销售数量)
stddev_if 按条件求标准差 stddev_if(进货价格>8,销售数量)
max_if 按条件求最大值 max_if (进货价格>8,销售数量)
min_if 按条件求最小值 min_if (进货价格>8,销售数量)
count_if 按条件计数 count_if(进货价格>8,销售数量)
unique_count_if 按条件求非重复计数 unique_count_if(进货价格>8,销售数量)


分析公式

表 12-2 分析公式表
公式 说明 样例
cumulative_average 输入一个度量和一个或多个属性。

求按指定属性排序后的各行累积平均值

cumulative_average(销售数量,订单日期, 产品类别)

注:按订单日期排序后再按产品类别排序的累积平均销售数量。

cumulative_max 输入一个度量和一个或多个属性,求按指定属性排序后的各行累积最大值 cumulative_max(销售数量,订单日期, 产品类别)
cumulative_min 输入一个度量和一个或多个属性,求按指定属性排序后的各行累积最小值 cumulative_min (销售数量,订单日期, 产品类别)
cumulative_sum 输入一个度量和一个或多个属性,求按指定属性排序后的各行累积总和 cumulative_sum (销售数量,订单日期, 产品类别)
cumulative_count 输入一个度量和一个或多个属性求按指定属性排序后的各行累积行数 cumulative_count (销售数量,订单日期, 产品类别)
cumulative_stddev 输入一个度量和一个或多个属性,求按指定属性排序后的各行累积标准差 cumulative_stddev (销售数量,订单日期, 产品类别)
cumulative_variance 输入一个度量和一个或多个属性,求按指定属性排序后的各行累积方差 cumulative_variance(销售数量,订单日期, 产品类别)
group_average 输入一个度量和多个属性,求按指定属性分组后度量的平均值 group_average(销售数量,订单日期, 产品类别)

注:各订单日期内的各产品类别的平均销售数量。

group_max 输入一个度量和多个属性,求按指定属性分组后度量的最大值 group_max (销售数量,订单日期, 产品类别)
group_min 输入一个度量和多个属性,求按指定属性分组后度量的最小值 group_min (销售数量,订单日期, 产品类别)
group_sum 输入一个度量和多个属性,求按指定属性分组后度量的和 group_sum (销售数量,订单日期, 产品类别)
group_count 输入一个度量和多个属性,求按指定属性分组后度量的计数 group_count(销售数量,订单日期, 产品类别)
group_stddev 输入一个度量和多个属性求按指定属性分组后度量的标准差 group_stddev(销售数量,订单日期, 产品类别)
group_variance 输入一个度量和多个属性求按指定属性分组后度量的方差 group_variance(销售数量,订单日期, 产品类别)
moving_average 移动平均值

输入一个度量和一个或者多个属性,两个数字(定义窗口范围)分析度量的平均值

第一个数字为当前位置向上移动的行数,第二个数字为向下移动的行数

moving_average(进货价格,7,6,订单日期)
moving_max 移动最大值

输入一个度量和一个或者多个属性,两个数字(定义窗口范围)分析度量的最大值

第一个数字为当前位置向上移动的行数,第二个数字为向下移动的行数

moving_max(进货价格,7,6,订单日期)
moving_min 移动最小值

输入一个度量和一个或者多个属性,两个数字(定义窗口范围)分析度量的最小值

第一个数字为当前位置向上移动的行数,第二个数字为向下移动的行数

moving_min(进货价格,7,6,订单日期)
moving_sum 移动求和

输入一个度量和一个或者多个属性,两个数字(定义窗口范围)分析度量的和

第一个数字为当前位置向上移动的行数,第二个数字为向下移动的行数

moving_sum(进货价格,7,6,订单日期)
moving_count 移动计数

输入一个度量和一个或者多个属性,两个数字(定义窗口范围)分析度量的计数

第一个数字为当前位置向上移动的行数,第二个数字为向下移动的行数

moving_count(进货价格,7,6,订单日期)
moving_stddev 移动求标准差

输入一个度量和一个或者多个属性,两个数字(定义窗口范围)分析度量的标准差

第一个数字为当前位置向上移动的行数,第二个数字为向下移动的行数

moving_stddev(进货价格,7,6,订单日期)
moving_variance 移动求方差

输入一个度量和一个或者多个属性,两个数字(定义窗口范围)分析度量的方差

第一个数字为当前位置向上移动的行数,第二个数字为向下移动的行数

moving_variance(进货价格,7,6,订单日期)

转换公式

表 12-3 转换公式表
公式 说明 样例
to_bool 转换对应的数字为boolean类型 to_bool (9.37)
to_date 把指定的数字和字符串类型的日期值转换成日期格式(impala只支持'%Y-%m-%d %H:%M:%S' 格式的字符串转换) to_date (10.07)
to_double 把指定的数字转换为double类型 to_double (订单单号)
to_integer 把指定的数字转换为integer类型 to_integer (订单单号)
to_string 把指定的输入转为字符串 to_string (订单日期)


日期公式

表 12-4 日期公式表
公式 说明 样例
add_years 为日期列增加年数 add_years(订单日期, 8 )
add_months 为日期列增加月数 add_months(订单日期,8)
add_weeks 为日期列增加周数 add_weeks(订单日期,8)
add_days 为日期列增加天数 add_days (订单日期,8)
add_hours 为日期列增加小时数 add_hours (订单日期,8)
add_minutes 为日期列增加分钟数 add_minutes(订单日期,8)
add_seconds 为日期列增加秒数 add_seconds (订单日期,8)
date 计算指定时间的日期部分 date(订单日期)
day 计算指定时间是月内的哪一天(1~31) day(订单日期)
day_number_of_week 计算指定时间是周内的哪一天(1~7对应周一到周日) day_number_of_week (订单日期)
day_number_of_quarter 计算指定时间是季度内的哪一天 day_number_of_quarter (订单日期)
day_number_of_year 计算指定时间是年内的哪一天(1~366) day_number_of_year (订单日期)
day_of_week 计算指定时间是周几(Monday~Sunday) day_of_week (订单日期)
week_number_of_month 计算指定时间是月内的哪一周(1~6)

注:按电子日历从周一至周日

week_number_of_week (订单日期)
week_number_of_quarter 计算指定时间是季度内的哪一周(1~15)

注:按电子日历从周一至周日

week_number_of_quarter (订单日期)
week_number_of_year 计算指定时间是年内的哪一周(1~53)

注:按电子日历从周一至周日

week_number_of_year (订单日期)
diff_days 用前一个日期减后一个日期计算天数的差值,差值超过12小时算一天 diff_days(签收日期,发货日期)
diff_time 用前一个日期减后一个日期计算秒数差值 diff_time(发货日期,订单日期)
hour_of_day 计算时间是当天的几点(0~23) hour_of_day(订单日期)
is_weekend 指定日期是否是周末 is_weekend(订单日期)
month 计算指定月份(January~December) month (订单日期)
month_number 计算指定日期是当年的第几个月(1~12) month_number (订单日期)
month_number_of_quarter 计算指定日期是当年的第几个月 month_number_of_quarter (订单日期)
start_of_day 计算指定日期所属日的开始日期 start_of_day(订单日期)
start_of_month 计算指定日期所属月的开始日期 start_of_month(订单日期)
start_of_quarter 计算指定日期所属季度的开始日期 start_of_quarter (订单日期)
start_of_week 计算指定日期所属周的开始日期 start_of_week (订单日期)
start_of_year 计算指定日期所属年的开始日期 start_of_year (订单日期)
time 计算指定日期的时间部分 time(订单日期)
year 计算指定日期年份 year (订单日期)
now 获取当前时间 now( )


混合函数

表 12-5 混合函数表
公式 说明 样例
!= 如果两值不等返回true否则返回false 销售数量 != 10000
< 如果前一个值小于后一个值返回true否则返回false 销售数量 < 10000
<= 如果前一个值小于等于后一个值返回true否则返回false 销售数量 <= 10000
= 如果两值相等返回true否则返回false 销售数量 = 10000
> 如果前一个值大于后一个值返回true否则返回false 销售数量 > 10000
>= 如果前一个值大于等于后一个值返回true否则返回false 销售数量 >= 10000
greatest 返回两值中较大的值 greatest ( 进价 , 售价 )
least 返回两值中较小的值 least ( 进价 , 售价 )


数字函数

表 12-6 数字函数表
公式 说明 样例
* 求两值的乘积 2*6

+

求两值的和 1+5

-

求两值的差 8-2
/ 求两值的商 12/2
^ 乘方 5^2=25
abs 求绝对值 abs(-5)=5
acos 反余弦 acos(0.5)
asin 反正弦 asin(0.5)
atan 反正切 atan(1)
atan2 反正切 atan2(1,2)
cbrt 立方根 cbrt(27) = 3
ceil 返回大于等于指定数字的最小整数 ceil(5.9) = 6
cos 余弦 cos(0.5)
cube 立方 cube(3) = 27
exp 自然常数e的乘方 exp(2)
exp2 2的乘方 exp2(3)=8
floor 返回小于等于指定数字的最大整数 floor(3.1)=3
ln 自然对数 ln(3)
log10 以10为底的对数 log10(3)
log2 以2为底的对数 log2(3)
mod 求模 mod(8,3)=2
pow 乘方 pow(2,3)=8
random 0~1之间的随机数 random()
round 四舍五入 round( 36.355 ,2)=36.36
sign 如果数字大于零返回1小于零返回-1等于0返回0 sign(-50)
sin 正弦 sin(0.5)
sq 平方 sq(8)
sqrt 开方 sqrt(64)
tan 正切 tan(0.5)
safe_divide 安全除法,防止除于0时报错的问题 safe_divide(销售金额,销售数量)

逻辑操作符

表 12-7 逻辑操作符表
公式 说明 样例
and 并逻辑运算 X=1 and X>3
if..then..else 逻辑判断 if X>3 then 'bigger' else 'not bigger'
ifnull 如果值1为null返回值2,否则返回值1 ifnull(cost, 'unknown')
isnull 如果值为null返回true否则返回false isnull(null) = true
not 非逻辑运算 not (2>3) = true
or 或逻辑运算 X=1 or X>3


文本操作函数

  • 公式中,列中值需加引号,不加引号的为源表中列名。
表 12-8 文本操作函数表
公式 说明 样例
concat 字符串链接操作 concat("test" , "123" )=test123

concat(产品类别," 的" ,产品名称)

contains 如果字符串1包含字符串2返回true否则返回false contains (“broomstick”, “room”) = true

contains(姓名, "赵" , "钱" , "孙")

not_contains 如果字符串1不包含字符串2返回true否则返回false not_contains (“broomstick”, “room”) = false

not_contains ( 姓名, "赵" , "钱" , "孙" )

strlen 字符串长度 strlen (“smith”) = 5
strpos 第二个字符串在第一个字符串中出现的位置 strpos (“haystack_with_needles”, “needle”) = 14
substr 获取字符串子串 substr (“persnickety”, 4, 7) = snicket
strupper 把输入的字符串转为大写 strupper(“example”)=EXAMPLE
strlower 把输入的字符串转为小写 strlower("EXAMPLE" )=example
begins_with 如果字符串1以字符串2开头返回true否则返回false begins_with("example","exa") = true

begins_with ( 姓名, "赵" , "钱" , "孙" )

not_begins_with 如果字符串1不以字符串2开头返回true否则返回false not_begins_with("example","exa") = false

not_begins_with ( 姓名, "赵" , "钱" , "孙" )

ends_with 如果字符串1以字符串2结尾返回true否则返回false ends_with("example","ple") = true

ends_with ( 姓名, "赵" , "钱" , "孙" )

not_ends_with 如果字符串1不以字符串2结尾返回true否则返回false not_ends_with("example","ple") = false

not_ends_with ( 姓名, "赵" , "钱" , "孙" )