公式列表

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

公式列表

下面各种公式列表主要是运用在搜索功能模块的添加公式框里。

聚合公式

表 9-1 聚合公式表
公式 说明 样例
average 求度量的平均值 average(revenue)
count 返回指定列的行数 count(product)
cumulative_average 输入一个度量和一个或多个属性求按指定属性排序的累积平均值 cumulative_average(revenue,orderdate,state)
cumulative_max 输入一个度量和一个或多个属性求按指定属性排序的累积最大值 cumulative_max(revenue, state)
cumulative_min 输入一个度量和一个或多个属性求按指定属性排序的累积最小值 cumulative_min (revenue, campaign)
cumulative_sum 输入一个度量和一个或多个属性求按指定属性排序的累积之和 cumulative_sum (revenue, order date)
group_average 输入一个度量和多个属性求按指定属性分组对度量求平均值 group_average(revenue,customer region, state)
group_count 输入一个度量和多个属性求按指定属性分组对度量求计数 group_count(revenue,customer region )
group_max 输入一个度量和多个属性求按指定属性分组对度量求最大值 group_max (revenue, customer region)
group_min 输入一个度量和多个属性求按指定属性分组对度量求最小值 group_min (revenue, customer region)
group_sum 输入一个度量和多个属性求按指定属性分组对度量求和 group_sum (revenue, customer region)
group_unique_count 输入一个度量和多个属性求按指定属性分组对度量求非重复计数 group_unique_count(revenue,customer region)
group_variance 输入一个度量和多个属性求按指定属性分组对度量求均方差 group_variance(revenue,customer region)
max 求度量的最大值 max (sales)
min 求度量的最小值 min (sales)
moving_average 输入一个度量和一个或者多个属性,两个数字(定义窗口范围)分析度量的平均值 moving_average(revenue,2,1,customer region)
moving_sum 输入一个度量和一个或者多个属性,两个数字(定义窗口范围)分析度量的求和 moving_sum(revenue,2,1,customer region)
stddev 求度量的标准差 stddev (revenue)
sum 对度量求和 sum (revenue)
unique_count 对属性或者度量进行非重复计数 unique count (customer)
variance 求度量的均方差 variance (revenue)
sum_if 按条件求和 sum_if(1>0,revenue)
average_if 按条件求平均值 average_if(1>0,revenue)
variance_if 按条件求均方差 variance_if(1>0,revenue)
stddev_if 按条件求标准差 stddev_if(1>0,revenue)
max_if 按条件求最大值 max_if (1>0,revenue)
min_if 按条件求最小值 min_if (1>0,revenue)
count_if 按条件计数 count_if(1>0,revenue)
unique_count_if 按条件求非重复计数 unique_count_if(1>0,revenue)


转换公式

表 9-2 转换公式表
公式 说明 样例
to_bool 转换对应的数字为boolean类型 to_bool (0) = false
to_date 把指定的数字和字符串类型的日期值转换成日期格式(impala只支持'%Y-%m-%d %H:%M:%S' 格式的字符串转换) to_date (date_sold, '%Y-%m-%d')
to_double 把指定的数字转换为double类型 to_double (revenue * .01)
to_integer 把指定的数字转换为integer类型 to_integer (price + tax - cost)
to_string 把指定的输入转为字符串 to_string (revenue - cost)


日期公式

表 9-3 日期公式表
公式 说明 样例
add_days 计算指定时间加指定天数的值 add_days (invoiced, 30)
date 计算指定时间的日期部分 date (home visit)
day 计算指定时间是月内的哪一天(1~31) day (date ordered)
day_number_of_week 计算指定时间是周内的哪一天(1~7对应周一到周日) day_number_of_week (shipped)
day_number_of_year 计算指定时间是年内的哪一天(1~366) day_number_of_year (invoiced)
day_of_week 计算指定时间是周几(Monday~Sunday) day_of_week (serviced)
diff_days 用前一个日期减后一个日期计算天数的差值,差值超过12小时算一天 diff_days (purchased, shipped)
diff_time 用前一个日期减后一个日期计算秒数差值 diff_time (clicked, submitted)
hour_of_day 计算时间是当天的几点(0~23) hour_of_day (recieved)
is_weedend 指定日期是否是周末 is_weekend (emailed)
month 计算指定月份(January~December) month (date ordered)
month_number 计算指定日期是当年的第几个月(1~12) month_number (date ordered)
start_of_month 计算指定日期所属月的开始日期 start_of_month (shipped)
start_of_quarter 计算指定日期所属季度的开始日期 start_of_quarter (shipped)
start_of_week 计算指定日期所属周的开始日期 start_of_week (shipped)
start_of_year 计算指定日期所属年的开始日期 start_of_year (shipped)
time 计算指定日期的时间部分 time(call begin)
year 计算指定日期年份 year (shipped)


混合函数

表 9-4 混合函数表
公式 说明 样例
!= 如果两值不等返回true否则返回false revenue != 10000
< 如果前一个值小于后一个值返回true否则返回false revenue < 10000
<= 如果前一个值小于等于后一个值返回true否则返回false revenue <= 10000
= 如果两值相等返回true否则返回false revenue = 10000
> 如果前一个值大于后一个值返回true否则返回false revenue > 10000
>= 如果前一个值大于等于后一个值返回true否则返回false revenue >= 10000
greatest 返回两值中较大的值 greatest (q1 revenue, q2 revenue)
least 返回两值中较小的值 least (q1 revenue, q2 revenue)


数字函数

表 9-5 数字函数表
公式 说明 样例
* 求两值的乘积 price*quantity
求两值的和 price+shipping
求两值的差 revenue-tax
/ 求两值的商 markup/retail price
^ 乘方 width^2
abs 求绝对值 abs(profit)
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)
floor 返回小于等于指定数字的最大整数 floor(3.1)=3
ln 自然对数 ln(3)
log10 以10为底的对数 log10(3)
log2 以2为底的对数 log2(3)
mod 求模 mod(8,3)
pow 乘方 pow(2,3)
random 0~1之间的随机数 random()
round 四舍五入 round(36,10)
sign 如果数字大于零返回1小于零返回-1等于0返回0 sign(-250)
sin 正弦 sin(0.5)
spherical_distance 返回两个地理位置的距离 spherical_distance
sq 平方 sq(8) = 64
sqrt 开方 sq(64) = 8
tan 正切 tan(0.5)



逻辑操作符

表 9-6 逻辑操作符表
公式 说明 样例
and 并逻辑运算 1=1 and 2>3
if..then..else 逻辑判断 if 2>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 或逻辑运算 1=1 or 2>3


文本操作函数

表 9-7 文本操作函数表
公式 说明 样例
concat 字符串链接操作 concat('test', '123') = 'test123'
contains 如果字符串1包含字符串2返回true否则返回false contains ('broomstick', 'room') = true
edit_distance 把字符串1编辑成字符串2编辑字符串1最小的字符数 当前公式暂时不可用
edit_distance_with_capAccepts 同上,增加cap参数 当前公式暂时不可用
similar_to 字符串类似匹配到为true没有匹配到为false 当前公式暂时不可用
similarity 求两个字符串的匹配度 当前公式暂时不可用
spells_like 是否两个字符串拼写类似 当前公式暂时不可用
strlen 字符串长度 strlen ('smith') = 5
strpos 第二个字符串在第一个字符串中出现的位置 strpos ('haystack_with_needles', 'needle') = 14
substr 获取字符串子串 substr ('persnickety', 4, 7) = snicket