我有一个2 tableau(v10.1.1)工作表--5个表 - 数据源中有5个左外连接 - 两个工作表中的一切都相同 - 就是这样,一个在SQL Sever(2012)上运行,另一个在运行在Spark(v1.6)。
SQl Server上的那个只运行工作表可视化中引用的那些连接。但是,Spark工作表正在执行所有5个连接?
有点惊讶我 - 相同的表,相同的模型,相同的工作表但不同的数据源生成不同的查询。
最诚挚的问候 开发
答案 0 :(得分:0)
每个数据源都有一个名为假定参照完整性的设置,告诉Tableau您是否希望它避免加入未引用的表 - 一种称为 join culling 。 Tableau为您提供了选项,因为在某些情况下优化可能会更改结果。
我认为只有当您的数据违反了正常的参照完整性约束时才会出现这些问题边缘情况,例如,通过使目标表没有源表中外键的匹配主键。如果您的数据库没有这个问题,要么是因为它是由约束,ETL进程,应用程序逻辑等强制执行的,那么选中该框就可以让Tableau安全地生成更高效的SQL。
在数据菜单下检查两个数据源中的设置是否相同。我认为默认值是假的 - 这是保守但较慢的选择。
如果两个数据源具有相同的设置,那么您可能在其中一个驱动程序中发现了一个错误,可能是较新的Spark SQL驱动程序。