我有这样的查询,我们用它来为我们的自定义仪表板生成数据(A Rails应用程序) -
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
现在我正在尝试将其移植到画面,我无法找到在画面中表示此数据的方法。我坚持如何在计算字段中表示内部组。我也可以尝试使用自定义的sql数据源,但我已经在使用其他数据源了。
mytable中的列 -
我认为这可以实现新的Level Of Details公式,但不幸的是我被困在版本8.3
答案 0 :(得分:0)
在极少数情况下保存自定义SQL。这看起来并不罕见。让Tableau为您生成SQL。
如果您只是连接到您的表,那么您通常可以编写计算字段来获取所需信息。我不完全确定为什么在查询的一部分中有test_name但在另一部分中有test_name_specific,所以忽略它,这是类似查询的简化示例。
如果定义名为worst_case_test_time的计算字段 datediff(min(start_time),dateadd(' second',max(start_time),avg_time_spent)),这看起来接近原始查询所说的内容。
如果你解释了你想要计算什么,那会有所帮助。它似乎是平均测试时间的某种最坏情况。可能有一个更简单的公式,但很难知道没有一点上下文。
你可以过滤状态="成功"和avg_time_spent< 1000,并将分支和WEEK(start_time)放在行和列架上。
P.S。您的查询似乎有些偏差。在HAVING关键字之后,你不需要像MAX或AVG这样的聚合函数吗?