Qlikview:如何创建汇总表以过滤多个关联表

Posted

技术标签:

【中文标题】Qlikview:如何创建汇总表以过滤多个关联表【英文标题】:Qlikview: how to create summary table to filter multiple associated tables 【发布时间】:2015-09-28 00:00:22 【问题描述】:

每个 ID 有 4-5 个单行和多行表。我想生成一个汇总表,列出每个 ID 以及各种计数和最大/分钟,但我希望能够过滤计算。示例:“ID”是标识符,有两个表,TestA 和 TestB。

一个期望的选择标准:仅显示至少一个 TestA 分数 >5 且至少有一个 TestB 分数的 ID。

在直表中,这很容易用表达式来做,但是不能根据计算出的真/假值来选择结果表。

我想我需要在加载脚本中创建一个包含 ID 的新表,然后按照我的意愿标记各种条件。然后,这些字段可以是维度。这在概念上似乎类似于主日历。我在正确的轨道上吗?

如果有助于理解我的例子,这是一个医疗应用程序;这些表格是实验室结果和其他干预措施,每一项都需要复杂的查询,从非常“硬编码”的各种来源中提取数据,以便从数百万行高度规范化的源数据中生成一个小型数据集。所需的维度将是实验室的组合,以便能够识别满足某些标准的患者——然后,一旦过滤,就会有更多的图表来确定该组患者遵循了哪些测试和程序。

我当前的数据模型只加载了许多表,然后在 ID 上关联。我曾尝试使用连接和计算将所有数据加载到一个大表中,但这似乎无法满足我的需要并且难以管理。

【问题讨论】:

【参考方案1】:

IIUC,我认为您想要做的事情可以通过表格中的滑块/输入框、变量和计算尺寸的组合来完成。这个过程肯定是繁重的,但它应该允许您以您想要的方式过滤。

    在脚本中的表加载语句中添加一个字段,例如rnum as RowNo()。 为您的过滤器创建一个变量。前任。 vFilterTestAScore

    将滑块或输入框添加到仪表板并将其指向该变量。

    一个。对于滑块,选项位于常规选项卡 -> 数据标题 -> 选择变量单选按钮。

    b.对于输入框,将列表中的正确 var 添加到 Displayed Variables 列表中。

    将滑块/输入框设置为您想要的标准:vFilterTestAScore = 5vFilterTestBScore = 1

    使用ID 作为TestAScoreTestBScore 的维度和表达式创建一个直表。表达式公式分别为sum(TestAScore)sum(TestBScore)(直到下一步才有意义)。

    现在向您的表格添加一个计算维度。这里的想法是,您将创建一个计算维度,而不是仅显示 ID 维度,该维度仅显示满足您在滑块中选择或在输入框中输入的条件的记录的 ID。公式应该是这样的: if(aggr(sum(TestA), rnum) >= vFilterTestAScore, ID, null()) 或多个过滤器:if((aggr(sum(TestA), rnum) >= vFilterTestAScore) and (aggr(sum(TestB), rnum) >= vFilterTestBScore), ID, null())

    在您的新计算维度上,选中“当值为 Null 时抑制”框,以便只有符合条件的结果才会显示在表格中。

总而言之,您正在使用变量来存储您通过输入框或滑块输入的选择标准。然后,您将通过计算维度和“Suppress When Null”选项有条件地仅在表中显示与这些条件匹配的 ID。

如果您不使用免费的个人版并且能够打开其他 qvw,我可以给您发送一个 .qvw。

【讨论】:

谢谢,这很有帮助...向表格添加计算维度的基本概念是我使用过的一种技术,对该表格有效,但是当我想要在页面上创建其他图表。例如,表格列出了符合标准的患者,然后图表可能会显示在这些患者中,测试分数的范围是多少。我认为,解决方案是将相同的计算放入表达式中。当您在概念上更容易选择计算的维度时,您最终会得到一个相当混乱的页面。 span> 我明白了,问题不在于让它对一个图表起作用,而在于多个图表试图在相同的选择下运行。如果你用表达式而不是维度来制作列表框,然后把你的“选择逻辑”放在那个表达式中怎么办?列表框的结果将是 ID,然后您可以通过单击并拖动所有结果手动选择。这样,只有与选择逻辑匹配的 ID 在您的州中可用,因此所有其他图表都会相应更新。 列表框表达式需要包裹在aggr()中。就像:=aggr(concat(distinct if((aggr(sum(TestA), rnum) >= vFilterTestAScore) and (aggr(sum(TestB), rnum) >= vFilterTestBScore), ID, null()), ','), ID)。这需要返回相同的IDconcat 并将它们包装到一个虚拟表中,以便列表框可以显示结果。我对此进行了测试,并针对多个图表进行了测试,它应该可以工作。您只需为要运行的每个场景创建一个列表框。

以上是关于Qlikview:如何创建汇总表以过滤多个关联表的主要内容,如果未能解决你的问题,请参考以下文章

事实表中的多个字段引用一维 Qlikview

如何从 QlikView 连接到 Databricks Delta 表?

DAX Measure 在过滤器表达式中使用来自不同相关表的多个列

Django Q过滤器,无法在单个查询中获得结果

Oracle多表关联如何更新多个字段

QlikView 中如何给Current Selections排序