Qlikview:如何创建摘要表以筛选多个关联表

Qlikview:如何创建摘要表以筛选多个关联表,qlikview,Qlikview,我有4-5个表,每个ID有一行和多行。我想生成一个汇总表,列出每个ID以及各种计数和最大/分钟,但我想能够过滤计算。示例:“ID”是标识符,有两个表,TestA和TestB 一个所需的选择标准:仅显示至少一个TestA分数>5且至少有一个TestB分数的ID 在直线表中,这对于表达式很简单,但无法根据计算的真/假值选择结果表 我想我需要在加载脚本中创建一个新表,其中包含ID,然后根据需要标记各种条件。然后,这些字段可以是维度。这在概念上似乎类似于主日历。我走对了吗 如果这有助于理解我的例子,这是

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

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

在直线表中,这对于表达式很简单,但无法根据计算的真/假值选择结果表

我想我需要在加载脚本中创建一个新表,其中包含ID,然后根据需要标记各种条件。然后,这些字段可以是维度。这在概念上似乎类似于主日历。我走对了吗

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


我当前的数据模型只是加载多个表,然后根据ID进行关联。我曾尝试使用连接和计算将所有数据加载到一个大表中,但这似乎没有实现我需要的功能,而且很难管理。

IIUC,我想您想要做的事情可以通过组合滑块/输入框来实现,表中的变量和计算维度。这个过程无疑是很繁重的,但它应该允许您以您想要的方式进行过滤

  • 在脚本中的表加载语句中添加一个字段,如
    rnum as RowNo()
  • 为过滤器创建一个变量。例如,
    vFilterTestScore
  • 将滑块或输入框添加到仪表板并将其指向该变量

    a。对于滑块,该选项位于“常规”选项卡->数据标题->选择变量单选按钮中

    b。对于输入框,将列表中正确的变量添加到显示的变量列表中

  • 将滑块/输入框设置为所需的条件:
    vFilterTestAScore=5
    vFilterTestBScore=1

  • 创建一个直表,其中
    ID
    作为
    testscore
    TestBScore
    的维度和表达式。表达式公式分别是
    sum(TestAScore)
    sum(TestBScore)
    (这在下一步之前没有意义)

  • 现在将计算的维度添加到表中。这里的想法是,不只是拥有
    ID
    维度,而是创建一个计算维度,仅显示满足在滑块中选择的条件或在输入框中输入的条件的记录的
    ID
    。公式应类似于:
    if(aggr(sum(TestA),rnum)>=vFilterTestAScore,ID,null())
    或对于多个筛选器:
    if((aggr(sum(TestA,rnum)>=vFilterTestAScore)和(aggr(sum(TestB),rnum)>=vFilterTestBScore),ID,null())

  • 在新计算的维度上,选中“值为Null时抑制”框,以便表中仅显示符合条件的结果

  • 总而言之,您使用变量来存储通过输入框或滑块输入的选择条件。然后,通过计算的维度和“空时抑制”选项,在表中有条件地仅显示符合这些条件的ID


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

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