列表中的案例 - 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 注册表单案例 ② ( 表格中的内容设置 | 下拉列表 | 输入文本框 | 复选框 | 文本域 | 图片按钮 | 链接 )

04.React组件基础案例

HBase模式案例研究列表数据

Android学习笔记之Spinner下拉列表使用案例

55个案例:吃透Python列表的索引和切片