当前位置: 首页 > news >正文

tableau 字段去重_Tableau 我常用函数整理

日期函数

dateadd

datedadd (date_part, interval, date) 表示在日期 date 的基础上, 以date_part 为单位, 与之间隔 interval的日期

dateadd ("month", -3, #2020/3/8#) 则返回 2019/12/8 0:00:00;

dateadd("day", -7, #2020/3/8#) 则返回 2020/3/1 0:00:00 查看过去一周, 半年, 3个月等的日期会用到.

datediff

datediff (date_part, start_date, end_date, [start_of_week]) 计算两日期的差, 以 date_part 为单位.

datediff("week", #2020/3/8#, #2020/3/9#) 返回 0 , 3/8 与 3/9 相差 0 周

datediff("week", #2020/3/8#, #2020/3/9#, "monday") 返回 1 因为 3/8 是周日, 一周开始若为周一, 则相差一周啦.

isdate

isdate (string) 判断一个字符串是否为有效日期. 是则返回 "真", 否则 "伪"

isdate("2020/3/8") ; isdate("2020-03-8") 返回 "真"

makeday

makeday (year, month, day) 构造一个包含 年, 月, 日 的日期值, 常用于数据提取, 日期比较等

makeday (2020, 3, 8) 则返回 2020/3/8

maketime

maketime (hour, minute, second) 构造一个包含 时, 分, 秒 的日期值

maketime (8, 30, 0) 则返回 1899/12/30 8:30:00

max, min

max (date1, date2) 也可用于比较两个时间, 返回 较近/ 较远 的一个距今

max (#2020/1/1#, #2020-3-8#) 返回 2020/3/8; min 则是相反的用法

now

now () 返回当前的日期和时. 配合 date, year, month 就很灵活了.

now () 返回 2020/3/8 23: 22:26

year(now()), month (now ()), date(now()) 分别返回 2020, 3, 2020/3/8

today

返回今天的日期. today () 则返回 2020/3/8 . 经常用作与一个 动态的参数值. 比如日报中算环比, 同比都会用到

类型转换

date

将给定的 字符串, 数字, 日期 表达式转为日期类型. 常用于强行转换, 比如对 数据库中的各种时间强行转换

date("2020/3/8") 和 date("2020-3-8 2:22:22") 和 date(2020, 3, 8) 都返回 2020/3/8 这样就能准确比较了

datetime

跟 date () 一样的, 只不过更加精确到 时, 分秒. 也是会用在时间的比较上的

datetime ("2020-3-8 22:22:22") 返回 2020/3/8 22:22:22; 而 datetime ("2020/3/8") 返回 2020/3/8 0:00:00

float, int

将表达式转为 浮点数或整数. 注意的是 int 不是四舍五入, 而是直接取整.

时间其实也是一个 数字类型. int (#2020-3-8#) 返回 43896; int("666") 返回 666; int("aaa") 则啥都没有.

str

将表达式转为字符串类型. 可用于, 字符串的拼接. 如 字段拼接, 构造唯一值等场景. 大类, 小类 排序会用到

逻辑函数

if

if 条件 then 表达式 end

if 条件 then 表达式1 else 表达式2 end

# 多层嵌套

if [当期值] > 10000

then if [同期值] > 10000

then "1好"

else "2好"

end

elseif [当期值] <= 10000 and [当期值] > 5000

then "较好"

else "不好"

end

....

case

跟 if 的作用基本一样, 但使用更加方便, 尤其在返回结果比较多的情况下

case 表达式

when 值1 then return1

when 值2 then return2

when 值3 then return3

...

else reurnx

end

比如, 对 "省市" 字段进行 区域的划分 (创建计算字段 "大区")

case [省市]

when "吉林" or "辽宁" or "黑龙江" then "东北"

when "安徽" or "江苏" or "浙江" or "福建" then "华东"

when "江西" or "河南" or "湖北" then "华中"

else "未划分"

end

ifnull

ifnull (expr1, expr2) 如果结果不是 null, 则返回 expr1 否则 返回 expr2 判断时可对 if xxx else ... 优化

ifnull ([当期值], [同期值]) 等价于, 将当期值的 缺失值 用 同期值填充了.

isnull

isnull (expr) 返回布尔值. 如果表达式为 null 则返回 "真" 否则返回 "伪"

注意的是, isnull (null) 返回 "真"; isull(" ") 返回 "伪". 空字符串不是空哦, 注意跟有点编程语言的区分

聚合函数

Tableau 的拖拽字段到行列, 其实就是执行了大致 SQL: 聚合函数(度量字段) group by [维度]. 默认是 sum. 这就解释了在计算字段的时候, 有的时候需要手动加 sum, 有时候又不需要. 这就需要想想它 原本的 sql 大致是怎样的逻辑即可

count

对离散或度量字段, 进行计数, 会忽略 null 值, 不去重

countd

对离散或度量字段, 进行计数, 会忽略 null 值, 会去重

统计门店数据量, 大区啥的都经常会用到. 注意, 表连接(混合数据源) 不能用 countd. 可通过 sql来 Union 解决

sum

只能对度量字段 求和, 会忽略 Null 值. Tableau 默认对度量字段聚合,要看每一条则在 数据 -> 取消聚合 即查看

avg

只能用于度量字段 求均值, 会忽略 Null 值

max, min

度量字段的最值; 传字符串则返回原值; 也可用做两个时间比较(如上提到)

attr

attr ([expr]) 如果 expr 的每一行都有值, 则返回该值. 否则返回 * , 会忽略 Null 值

median

只能用于度量字段, 求中位数, 会忽略 Null 值

表计算函数

total

返回给定表达式的总计, 常用于计算 各自分区中 的全部行的 聚合值等

total (sum([销售量])) 表示计算 各自分区中的全部行的 sum([销售量])

index

返回分区中当前行的索引, 不包含于是值相关的任何排序. 常用于对某个字段和 [手机品牌] 按特定的顺序排列

....

这部分很多, 但目前很多, 没用到, 或者是不会用.

详细级别函数

也称为 " LOD" 表达式 或 "LOD" 计算.

是除视图级别外, 的其他维度上支持聚合, 能实现将 一或多个 维度 附加到 任何的聚合表达式.

与表计算, 参考线等不同在于, LOD 是在数据源中计算的. 针对大型数据源, 会大幅度提高性能 但同时也会导致 Tableau 运行更加复杂的查询 (如多表连接), 在基础数据源缓慢的情况下, 影响性能.

固定 (fixed) : 灵活选择 高于 或 低于 视图层, 各个维度进行 group by 再 aggregation

包含 ( include): 用于创建 高于 视图层的, 来分组聚合.

排除 ( eclude): 用于创建 低于 视图层的, 来进行分组聚合.

表达也似乎不大准确, 举个栗子就好了.

fixed

{fixed [维度1], [维度2]... : 聚合函数 (度量字段)} 表示 对维度 dim1, dim2 ... 的维度进行聚合操作.

fixed 计算 在维度筛选器 之前应用, 但会受到 上下文筛选器, 数据源筛选器, 和数据提取筛选器的影响. 如果想要将筛选器应用于 fixed 表达式级别 而又不想用 上下文筛选器. 则可将其改为 include 或 exclude 表达式

通常用 fixed 这样的 LOD 表达式, 可以生成度量或维度.

{fixed [商品ID] : sum ([销量])} 是计算, 每件商品, 销量的总和

{fixed [商品ID], [年份] : sum ([销量]) 是计算每件商品, 每年 的销量总和

{fiexd [商品ID] : min ([订单日期]) 是计算, 每件商品的, 最早订单日期

来个栗子, 以超市数据为例, 计算 每个地区中, 每个省份的销售量, 先建一个计算字段.

然后再将 "地区" 和 "省" 放到列, 再将 地区映射到 颜色做区分.

与之相关的还有 include 和 exclude 的 LOD 表达式, 我暂时没有用到过, 就不写了先. 用到再说吧.

我感觉, 这个 Tableau , 慢慢用下来, 还是有点香的, 慢慢记录有空的话.

相关文章:

  • 分组查询 mysql_mysql基础-分组查询
  • 夜已深
  • oracle从mysql抓数据_关于oracle数据库读取数据的三种方式
  • mysql查看表中最高价格_一个MySQL查询来查找两个表中的最高价和最低价?
  • 金科玉律
  • python 打开pytorch_pytorch学习(五)—图像的加载/读取方式
  • 本周技术关注[面向webapps运维]:你养着工作还是工作养着你?
  • python保持登录状态_Python-保持登录状态进行接口测试
  • 有人见过在Windows Server 2003下面出现这样的字体变形模糊的异常吗?
  • 华为p10多屏互动在哪_华为p10如何投屏到电视?手机还有这些使用技巧
  • 关于南沙新厂的弱电工程(设想中,未完)
  • java中文转编码_利用JAVA将中文转Unicode编码
  • 电脑工程师职责要求
  • HTTP错误代码解释
  • c java http_Java Http协议
  • [笔记] php常见简单功能及函数
  • 《深入 React 技术栈》
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • javascript面向对象之创建对象
  • Java知识点总结(JavaIO-打印流)
  • Markdown 语法简单说明
  • mysql 5.6 原生Online DDL解析
  • Sublime text 3 3103 注册码
  • vue的全局变量和全局拦截请求器
  • Yii源码解读-服务定位器(Service Locator)
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 蓝海存储开关机注意事项总结
  • 学习笔记:对象,原型和继承(1)
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #pragma multi_compile #pragma shader_feature
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (C#)获取字符编码的类
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (九)信息融合方式简介
  • (九十四)函数和二维数组
  • (万字长文)Spring的核心知识尽揽其中
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • ***详解账号泄露:全球约1亿用户已泄露
  • .axf 转化 .bin文件 的方法
  • .gitignore文件---让git自动忽略指定文件
  • .Net8 Blazor 尝鲜
  • .NET基础篇——反射的奥妙
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛