在ClickHouse中使用JOINS进行Tableau查询并检查是否为NULL

时间:2019-04-06 11:59:25

标签: tableau clickhouse

我正在运行通过ODBC驱动程序连接到ClickHouse的Tableau。起初,大多数报告请求都失败了。我已经配置了这个tdc文件https://github.com/yandex/clickhouse-odbc/blob/clickhouse-tbc/clickhouse.tdc,它实际上开始工作了,但是由于使用了{{1},现在某些包含NULLON的检查的JOINS查询请求失败了。 }},而不是IS NULL

isNull(id)

这是正确的工作方式:

JOIN users ON ((users.user_id = t0.user_id) OR ((users.user_id IS NULL) AND (t0.user_id IS NULL)))

如何使Tablau驱动程序发送正确的请求?

2 个答案:

答案 0 :(得分:0)

以下是一些建议:

Tableau社区上的

This post看起来与您描述的症状相似。建议的解决方案是将所有字段都包装为IfNull([Dimension], ""),从而显然减少了Clickhouse进行空值检查的需要。

Github的TDC文件看起来很完整,但是可能没有考虑联接。 GitHub commit声明tdc为“未测试”。我会向该TDC的创建者发消息,看看他们是否已完成有关联接的任何工作以及是否有任何建议。

Here is a list可能的 ODBC定制,可以将其添加到Tem文件中或从中删除。两者的结合可能需要一些实验,但是作为一种可能的解决方案,它们值得研究。

创建摘要,然后再执行复杂的分析。如果您最初能够进行连接,那么应该可以将Clickhouse中的所有数据提取到其中。

自定义SQL 可能会减轻任何联接语法问题,因为查询和所有联接完全是由您编写的。与ClickHouse建立初始连接后,无需选择表,而是选择“自定义ODBC”并编写查询,该查询将返回您选择的联接表。

最后, Tableau Ideas论坛是一个在即将到来的连接器上进行投票和/或投票的地方。我可以看到已经有idea in place for ClickHouse。随意投票。

答案 1 :(得分:0)

如果您可以确保数据中不包含任何NULL值,则也可以使用我针对此确切问题编写的代理。

https://github.com/kfzteile24/clickhouse-proxy

在大多数情况下,这种方法还是可行的,但这并不是防弹的。