Tableau api 将具有内部联接的复杂查询转换为tableau

Tableau api 将具有内部联接的复杂查询转换为tableau,tableau-api,Tableau Api,我有一个类似这样的查询,我们使用它为自定义仪表板(Rails应用程序)生成数据- 现在我正试图将其移植到tableau,但我找不到在tableau中表示这些数据的方法。我被困在如何在计算字段中表示内部组。我也可以尝试只使用自定义sql数据源,但我已经在使用另一个数据源 mytable中的列- 开始时间 平均花费时间 名字 分支机构 地位 我认为这可以通过新的详细级别公式来实现,但不幸的是,我被困在8.3版中,为少数情况保存自定义SQL。这看起来并不罕见。让Tableau为您生成SQL 如果只是连

我有一个类似这样的查询,我们使用它为自定义仪表板(Rails应用程序)生成数据-

现在我正试图将其移植到tableau,但我找不到在tableau中表示这些数据的方法。我被困在如何在计算字段中表示内部组。我也可以尝试只使用自定义sql数据源,但我已经在使用另一个数据源

mytable中的列-

  • 开始时间
  • 平均花费时间
  • 名字
  • 分支机构
  • 地位

  • 我认为这可以通过新的详细级别公式来实现,但不幸的是,我被困在8.3版中,为少数情况保存自定义SQL。这看起来并不罕见。让Tableau为您生成SQL

    如果只是连接到表,则通常可以编写计算字段以获取所需信息。我不太清楚为什么在查询的一部分中有test_name,但在另一部分中有test_name,所以忽略这一点,下面是一个类似查询的简化示例

    如果您定义了一个名为“最坏情况测试时间”的计算字段 datediff(最小值(开始时间)、dateadd('second',最大值(开始时间)、平均花费时间)),这似乎与原始查询所说的非常接近

    如果你解释一下你到底想计算什么,那会有帮助的。对于平均测试时间来说,这似乎是某种最坏的情况。可能有一个更简单的公式,但如果没有一点背景,就很难知道

    您可以在status=“Success”和avg_time_花费<1000时进行筛选,并将分支和周(start_time)放在行和列工具架上

    另外,你的问题似乎有点不对劲。have关键字之后不需要像MAX或AVG这样的聚合函数吗

    SELECT AVG(wait_time) FROM (
         SELECT TIMESTAMPDIFF(MINUTE,a.finished_time,b.start_time) wait_time
               FROM (
                    SELECT max(start_time + INTERVAL avg_time_spent SECOND) finished_time, branch
                      FROM mytable
                     WHERE name IN ('test_name')
                       AND status = 'SUCCESS'
                     GROUP by branch) a
              INNER JOIN
                    (
                    SELECT MIN(start_time) start_time, branch
                      FROM mytable
                     WHERE name IN ('test_name_specific')
                    GROUP by branch) b
              ON a.branch = b.branch
             HAVING avg_time_spent between 0 and 1000)t
    GROUP BY week