繁体   English   中英

如何在表格中模拟 SQL 组?

[英]How do I simulate SQL group by in tableau sheet?

我是新来的画面。 我已将数据库中的表连接到我的 tableau 桌面,如下所示:

患者数据

我想显示基于医院的平均费用和患者总数。 在 SQL 查询中,我可以很容易地使用这个查询:

select 
  Hospital,
  count(*) as total_patients,
  avg(cost) average_cost
from table1
group by hospital

我如何在画面中模拟这个?

之前谢谢。

要模拟您的表格,请将Hospital添加到行架,将Measure Names添加到列架,并将Measure Names添加到过滤架。 在那里,仅过滤要显示的度量(在本例中为Number of recordscost )。

最后,将字段Measure values添加到 Text (Marks) 架子,然后在 select 处添加所需的聚合(单击成本 >> 测量 >> 平均值)。

默认情况下,Tableau 会生成它所谓的聚合(又名分组依据)查询。 您可以从“分析”菜单中更改它,但很少需要这样做。

您要分组的字段称为维度。 您正在聚合的字段称为度量。 在左侧栏的数据窗格中,字段具有默认角色(维度或度量),但您可以在任何视图中覆盖字段的角色。

只需将 Hospital 放在某个架子上,比如 Rows,以在每个医院的可视化中获得一行,然后将您的措施放在另一个架子上,选择您想要的聚合 function。 然后将 SUM([Number of Records]) 放在 Columns 上,将 AVG([Cost]) 放在 Color 上。 您可以重新排列哪些字段在哪些架子上,它不会更改查询结果,只是显示 - 除了过滤器和工具提示架子有点不同。 您还可以使用标记卡顶部的标记类型来更改演示文稿。

记录数只是一个等于 1 的预定义计算字段。因此 SUM([记录数]) 与 COUNT(*) 相同。 Tableau 中没有名为 * 的字段,但如果您愿意,可以使用 COUNT("*") 以获得相同的效果。

正如@Bob 所提到的,您还可以使用大括号和 FIXED、INCLUDE、EXCLUDE 语法定义详细级别 (LOD) 计算。 这些是复杂的计算,可让您定义与查询的 rest 连接的子查询,以允许您在不同的详细级别进行计算。 它们很有用,但会增加复杂性,并且会降低大型数据集的性能,因此请保留它们以在需要时使用它们以获得正确的结果。 许多(可能是大多数)可视化可以简单地使用维度和度量来定义,而无需编写 LOD 计算。

我建议避免将所有内容都写为 LOD 计算的陷阱,有些人在有大量手写 SQL 经验时似乎会陷入这种陷阱。 FIXED LOD calc 看起来像 SQL,因此在开始使用 Tableau 时它们可能是一个熟悉的实体。

答案取决于你的视觉。 如果您计划包括医院和患者,只需创建两个计算字段 -

平均成本-

AVG(cost)

病人数——

count(patient_id)

或者,也许您需要使用详细级别表达式。 FIXED 详细级别表达式可以具有比视图更精细的详细级别、更粗略的详细级别或相同的详细级别。 是否需要聚合 FIXED 详细级别的结果取决于视图中的维度。-

{ FIXED [hospital], [patient_id] : AVG(cost) } //Avg patient cost by hospital and patient id
{ FIXED [hospital] : COUNT(patient_id) } //# of non distinct patients by hospital

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM