【问题标题】:Tableau executing all datasource joins with SparkTableau 使用 Spark 执行所有数据源连接
【发布时间】:2017-04-23 05:25:33
【问题描述】:

我有 2 个表格 (v10.1.1) 工作表 - 5 个表 - 数据源中的 5 个左外连接 - 两个工作表中的所有内容都相同 - 就是这样,一个在 SQL Sever (2012) 上运行,另一个在 SQL Sever (2012) 上运行在 Spark (v1.6) 上。

SQl Server 上的那个只运行那些在工作表可视化中被引用的连接。但是,Spark 工作表正在执行所有 5 个联接?

我有点惊讶 - 相同的表、相同的模型、相同的工作表,但不同的数据源生成不同的查询。

最好的问候
开发

【问题讨论】:

    标签: apache-spark tableau-api


    【解决方案1】:

    在每个数据源上都有一个名为 Assume Referential Integrity 的设置,它告诉 Tableau 您是否希望它避免加入未引用的表 - 一种称为 join culling 的优化。 Tableau 为您提供了选择,因为在某些情况下优化可能会改变结果。

    我相信只有当您的数据违反正常的参照完整性约束时才会出现这些问题边缘情况,例如目标表没有与源表中的外键匹配的主键。如果您的数据库不存在该问题,或者是因为它是由约束、ETL 流程、应用程序逻辑等强制执行的,那么选中该框可以让 Tableau 安全地生成更高效的 SQL。

    在数据菜单下检查两个数据源中的设置是否相同。我相信默认值为 false - 这是保守但较慢的选择。

    如果两个数据源具有相同的设置,那么您可能在其中一个驱动程序中发现了错误,可能是较新的 Spark SQL 驱动程序。

    【讨论】:

    • 嗨@Alex。以下是连接类型和引用完整性(单个数据源)的 4 种不同情况,这对从 tableau 发送到数据库的查询有直接影响:<- join type="LEFT;参照完整性=否:发送到数据库的查询:所有连接">
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 2017-12-24
    • 2017-05-24
    • 1970-01-01
    • 2023-04-06
    • 2017-03-29
    • 1970-01-01
    相关资源
    最近更新 更多