列表中的案例 - Tableau
Posted
技术标签:
【中文标题】列表中的案例 - Tableau【英文标题】:Case in list - Tableau 【发布时间】:2021-12-29 03:50:18 【问题描述】:我试图过滤掉大量数据,所以我决定创建一个计算字段并使用 case if product_id in list then '1' else '0' 但由于某种原因,它虽然语法错误。
这是我的计算字段:
product_id 在 ( '31049','31048','26166','27816','26031','28861','28864','28863','28203','28110','20641','38112','45174 ','20645','28404','20646','20648','26159','33287','31417','40551','41020','40550','40550','40553', '40554','29804','29941','31430','33354','36730','26073','31432','31433','31431','38154','38166','26029 ','28341','45138','38069','42069','26060','26060','33886','33886','28392','29518','44879','20651', '20655','42914','37535','28031','27588','29297','37688','37709','29551','29551','30183','29550','26187 ','29549','41348') THEN '1' 否则 '0' 结束
知道应该写谁吗?
提前感谢:)
【问题讨论】:
help.tableau.com/current/pro/desktop/en-us/… Tableau 计算语言中 CASE 语句的语法与 SQL 中的语法略有不同。 Tableau 的计算语言不是 SQL,但它最终会导致生成 SQL。语法在上一条评论中的文档链接中进行了描述 您也可以将“CASE when”这两个词替换为“IF”一词 【参考方案1】:在示例数据集上可行:
SELECT RIDE_ID as ri,
CASE
WHEN ri in ('5EB0FAD625CFAEAB', '5A9314E3AF8DCC30') THEN '1'
ELSE '0'
END AS result
FROM CITIBIKE_TRIPS LIMIT 10;
我得到:
【讨论】:
是的,它在数据库中有效,但在 Tableau 中无效 :) 我无法在计算字段中运行它 那么错误出现在 Tableau 上而不是 Snowflake 上?不幸的是,我不熟悉 Tableau 中计算字段的工作原理。【参考方案2】:是的,它在数据库中有效,但在 Tableau 中无效 :) 我无法在计算字段中运行它
也许使用 LATERAL
将允许从 Tableau 运行它:
CREATE OR REPLACE TABLE t(ID INT, product_id TEXT);
INSERT INTO t VALUES (1, '31049'),(2,'31048'), (3, '100');
SELECT *
FROM t
,LATERAL (SELECT CASE WHEN t.product_id IN ( '31049','31048','26166','27816'/*...*/)
THEN '1' ELSE '0' END) AS s(result);
【讨论】:
【参考方案3】:一个选项 - 使用您希望过滤的键创建一个表,然后使用连接让数据库完成工作。可能更容易维护。可能更高效
另一个选项是在 Tableau 中基于 product_id 字段创建一个集合。通过检查您希望的产品 ID 来定义该集合,然后放置要过滤的过滤器架的集合,以在您的集合中包含或排除 product_ids。
【讨论】:
以上是关于列表中的案例 - Tableau的主要内容,如果未能解决你的问题,请参考以下文章
HTMLHTML 注册表单案例 ② ( 表格中的内容设置 | 下拉列表 | 输入文本框 | 复选框 | 文本域 | 图片按钮 | 链接 )