我是Qlikview的新手,经过几次尝试失败后,我不得不就Qlikview中的图表寻求一些指导。我想创建具有以下内容的折线图:
一个维度 - 一个月的时间段按天分解
一个表达式 - 每天创建的任务数
第二个表达式 - 每天关闭的任务数
第三个表达 - 每天打开的任务数
这是一个非常基本的例子,我找不到解决方案,说实话,我想我不明白我应该如何设置我的时间段维度和表达式。每次当我尝试引入更多一个表达时,东西就会向南移动。也许是因为我有多个日期或我的维度是错误的。
这是我的简单数据:
我一直在阅读像Master Callendar或“Date Island”这样的助手表,但我无法理解。我试图从这里按照指南:https://community.qlik.com/docs/DOC-8642但这只适用于一个日期(至少对我而言)。
如何在我的图表上设置维度和表达式,如果创建日期与维度匹配且状态合适,我可以计算ID字段?
我有个人版,所以我无法打开其他作者的qwv文件。
提前谢谢,亲切的问候!
答案 0 :(得分:5)
我的解决方案是将每个呼叫的单行更改为具有关联日期的呼叫事件的串联列表,每个呼叫事件都有一个日期。即每个呼叫将具有创建事件和解决事件。这就是我实现这一目标的方式。 (我将您的数据转换为电子表格,但任何数据源的概念都相同。)
Calls:
LOAD Type,
Id,
Priority,
'New' as Status,
date(floor(Created)) as [Date],
time(Created) as [Time]
FROM
[Calls.xlsx]
(ooxml, embedded labels, table is Sheet1) where Created>0;
LOAD Type,
Id,
Priority,
Status,
date(floor(Resolved)) as [Date],
time(Resolved) as [Time]
FROM
[Calls.xlsx]
(ooxml, embedded labels, table is Sheet1) where Resolved>0;
这里的关键概念是允许QlikView的自动连接通过使两个加载语句的字段名完全相同(包括大小写)来完成它的工作。第二个是将时间戳分为日期和时间。这允许您仅具有日期维度并对当天的事件进行分组。 (在大数据集中,资源节省也很重要。)第三个是在每个事件创建日期创建虚拟“新”状态。
只有这些数据和这些表达式
Created = count(if(Status='New',Id))
Resolved = count(if(Status='Resolved',Id))
然后
Created-Resolved
所有完全累积都为Open打开(为了给你一个总计而不是每日总计,可能会变为负数并且看起来很奇怪)你可以绘制这个图。
为了获得额外的完整性,您可以将其添加到代码部分以填充日期并创建您所说的主日历。还有很多其他方法可以实现这个目标
MINMAX:
load floor(num(min([Date]))) as MINTRANS,
floor(num(max([Date]))) as MAXTRANS
Resident Calls;
let zDateMin=FieldValue('MINTRANS',1);
let zDateMax=FieldValue('MAXTRANS',1);
//complete calendar
Dates:
LOAD
Date($(zDateMin) + IterNo() - 1, '$(DateFormat)') as [Date]
AUTOGENERATE 1
WHILE $(zDateMin)+IterNo()-1<= $(zDateMax);
然后你可以绘制这个图表。不要忘记关闭“演示”选项卡上的“禁止零值”。
但我的建议是使用组合而不是折线图,以便每天的调用显示为离散桶(Bars),但Open调用的运行总数是一行