qlikview - 在图表中显示/隐藏行背后的逻辑
问题描述
我对 QlikView/QLik Sense 图表中行的显示和隐藏背后存在的逻辑感到困惑。这是我认为的情况:
- 如果对于某些行,维度的值为 NULL,并且对于该维度,“Supress NULL”为 on (QV) 或“Include NULLs”为 off(QS),则不显示该行。
- 如果对于某行,其所有表达式/度量为零或 NULL,并且对象级设置“抑制零值”处于打开状态 (QV),或“包含零值”处于关闭状态 (QS),则该行不是显示。
- 显示其余行。
但是,我得到了一个令人困惑的示例,它导致行消失,即使我已经关闭零值/包含零值。以下是一些示例客户及其咨询的小脚本:
customer:
LOAD * INLINE [
custcode,descr
C1,pan1
C2,pan2
C3,pan3
];
consultation:
LOAD * INLINE [
custcode,grp,val,x
C2,eye,sth1,1
C2,age,20,1
C3,legs,sth2,1
C3,skin,sth5,1
C3,age,20,1
C3,age,30,1
];
如您所见,custcode C1 没有咨询行。我继续创建一个具有custcode
维度和sum(x)
度量的直表。这是我得到的:
+----------+--------+
| custcode | sum(x) |
+----------+--------+
| C1 | 0 |
| C2 | 2 |
| C3 | 4 |
+----------+--------+
直到现在一切都很好。果然我没有抑制零值:如果我这样做了,C1 行将被删除。另外,请注意,aggr
无论出于何种原因,都不需要。
现在,让我们对该度量添加一个集合分析,以仅对 grp='age' 求和 x:
sum({<grp={'age'}>}x)
这隐藏了 C1 行:
+----------+-----------------------+
| custcode | sum({<grp={'age'}>}x) |
+----------+-----------------------+
| C2 | 1 |
| C3 | 2 |
+----------+-----------------------+
问题一:为什么集合分析在这种情况下会隐藏行?
添加一个值为 1 的附加度量不会改变任何内容。我们可以确定这与零值设置无关。
现在,让我们添加这个度量:
aggr(min(0),[custcode])
该行回来了,即使新的措施是 NULL :
+----------+-----------------------+-------------------------+
| custcode | sum({<grp={'age'}>}x) | aggr(min(0),[custcode]) |
+----------+-----------------------+-------------------------+
| C1 | 0 | - |
| C2 | 1 | - |
| C3 | 2 | - |
+----------+-----------------------+-------------------------+
现在,关于aggr
,这是我认为不需要它的两个强有力的理由:
- 如果集合分析度量是错误的并且需要以某种方式包含 aggr,这仍然不是引擎隐藏行的理由 - 它只会返回一个 NULL 用于具有无效的公式。此外,正如我们所见,这个措施实际上是正确的
custcode
是在两个表之间创建关联的字段。但这似乎不是它取消隐藏行的原因;实际上,即使使用以下方法,我也会得到相同的结果aggr(min(0),[])
:
+----------+-----------------------+-----------------+ | custcode | sum({<grp={'age'}>}x) | aggr(min(0),[]) | +----------+-----------------------+-----------------+ | C1 | 0 | - | | C2 | 1 | - | | C3 | 2 | - | +----------+-----------------------+-----------------+
问题 2:为什么这个奇怪的 aggr 度量会取消隐藏行?
解决方案
推荐阅读
- php - 如何禁用 woocommerce 画廊的产品图片缩略图?
- javascript - 禁用窗口的滚动,但仍然在里面滚动一个 div
- swift - SwiftUI array.isEmpty 在从 Firestore 收到数组之前不显示
- python - 将空引号分配给变量python
- javascript - Javascript对象数组基于对象属性合并
- android - 在 Android 上使用网络
- r - 缺失值的指示变量
- r - rgeos::gBuffer 缩小而不丢失点
- firebase - Cloud Functions 没有免费层 - Firebase
- julia - Julia:如何使直方图对于两个大小相等的向量具有相同数量的 bin?