有没有办法进行数据透视表样式分析,在这个例子中使用几个月,但是显示零缺少月而不是抑制字段? 我尝试将我的数据汇总到每月总计中,但不是每个类别都有每个月的值,所以当应用过滤器时,它会跳过几个月,这会给人留下错误的印象。
例如,我每天都会多次官员参加各种事件类型的事件。 我想按类型总结每个月到达的事件总数。 这是一个相当容易制作的图表,我使用的是日历。 但是,如果II使用一名官员作为过滤器并且该官员没有参加该月的任何事件,而不是显示0,那么它只是没有显示该月,这是有道理的,但它是'不是我想看到的。
答案 0 :(得分:3)
这种行为是在QlikView中设计的,正如您所发现的那样,如果数据在物理上缺失,则无法将QlikView哄骗在数据透视表中显示它。
除了通过加载脚本将值添加到文档的数据中之外,我从未真正找到对此问题的任何快速修复(即通过复选框或其他设置)。这样做的缺点是它会为文档数据添加大量冗余值,并且根据卷的不同,可能会导致文档出现性能问题。
我拿了你的例子并制作了一个小脚本,它将添加"缺失"数据的值。这意味着当您单击以选择人员时,所有月份都应存在于数据透视表图表中。它没有被抛光,可能不是最好的或最好的方式,但它有效(我在其他项目中使用过类似的东西),而且我不确定你是如何设置日历的。
无论如何,它可能会让你思考正确的方向!
Incidents:
LOAD
Officer,
IncidentType,
date#(AttendanceDate,'dd/MM/yyyy') as AttendanceDate,
AttendanceCount;
LOAD * INLINE [
Officer, IncidentType, AttendanceDate, AttendanceCount
A, A, 01/01/2014, 1
B, C, 01/01/2014, 1
C, C, 01/02/2014, 1
D, C, 01/01/2014, 1
E, D, 01/01/2014, 1
];
AllCombinations:
NOCONCATENATE
LOAD DISTINCT
Officer,
IncidentType
RESIDENT Incidents;
LEFT JOIN
LOAD DISTINCT
AttendanceDate,
0 as AttendanceCount
RESIDENT Incidents;
CONCATENATE (Incidents)
LOAD
*
RESIDENT AllCombinations;
DROP TABLE AllCombinations;
Calendar:
LOAD DISTINCT
month(AttendanceDate) as AttendanceMonth,
AttendanceDate;
LOAD DISTINCT
AttendanceDate as AttendanceDate
RESIDENT Incidents;
它的工作方式是在初始加载(Incidents
)之后,我们加载尺寸的唯一组合,但日期字段除外:
AllCombinations:
NOCONCATENATE
LOAD DISTINCT
Officer,
IncidentType
RESIDENT Incidents;
然后我们确定我们希望添加到上表的每个条目的所有日期值,然后使用LEFT JOIN
(这是一个QlikView连接而不是SQL)来复制每个唯一值的条目AttendanceDate
:
LEFT JOIN
LOAD DISTINCT
AttendanceDate,
0 as AttendanceCount
RESIDENT Incidents;
然后我们将其粘贴到原始Incidents
表中,然后删除表。
CONCATENATE (Incidents)
LOAD
*
RESIDENT AllCombinations;
DROP TABLE AllCombinations;
脚本的最后一部分只是创建一个日历表。