我有一个组合图表,显示一个人支付账单所需的平均天数。
图表的维度为chomp $port;
没有维度限制
有一个名为= [Pay Month Year last 12 months]
的表达式,其定义为:
Average
它按表达式排序,即avg({< InvoicefromSqlType = {'Invoices'},[Is Invoice Paid] = {'Y'},[Is Positive Amount] = {'Y'},[Is Paid last 12 months] = {'Y'},DueGroups=,[Pay Month Year last 12 months]=>}[Days to Pay])`
现在上面的字段是这样构建的:
[支付月份过去12个月]
[Pay Month Year last 12 months]
PayLoadOrder:
If([Pay Date] >= '$(vPeriodS12)',[Pay Month year]) as [Pay Month Year last 12 months],
现在发生的事情是每个月到达终点,下个月需要手动添加并删除第一个月(例如在上面我会删除2014年5月的行,最后添加行君2015)
此外,如果有几个月定义没有数据,即您有2015年6月的硬编码和2015年5月的当月,那么2015年6月将显示2014年的数据,并且月份的顺序将变得混杂起来。
我想要做的就是彻底消除上面几个月硬编码的需要,让它自己完成。
如果您需要更多信息,请告诉我
答案 0 :(得分:1)
而不是使用&#34;排序顺序&#34;您可能需要手动更新的表,可能值得执行以下操作:
创建一个从[Pay Date]
派生的新字段,该字段返回您可以排序的月份和年份。例如:
dual(date(makedate(year([Pay Date]),num(month([Pay Date]))),'MMM-yyyy'),
year([Pay Date]) * 100 + num(month([Pay Date]))) as PayMonthYear
此处,dual
函数允许您将字段值的不同表示与其基础值相关联。例如,在这里我们将基础数据设置为[Pay Date]
添加到月份的年份,但声明它应显示为MMM-yyyy
。例如,在内部,QV仍然看到值201502,但显示为2015年2月。这意味着您可以根据其基础值对其进行正确排序。
使用dual
是一个很大的主题,请参阅QV的内置帮助以获取更多信息。
将图表维度从[Pay Month Year last 12 months]
更改为使用PayMonthYear
,并将排序设置为升序。这意味着即使添加了新的月份,您的月份也会正确排序。
从脚本中删除表PayLoadOrder
。
替代方法
另一种方法是使用加入Pay Date
字段的日历表。这将实现同样的目的,但是,您也可以整合您的&#34;年初至今&#34;指标也会进入日历并从主表中删除。我快速拼凑的一个例子如下所示:
MinMax:
LOAD
Max([Pay Date]) AS MaxDate,
Min([Pay Date]) AS MinDate
RESIDENT MyData;
LET varMinDate = Num(Peek('MinDate',0,'MinMax')); // 0 is first record
LET varMaxDate = Num(Peek('MaxDate',-1,'MinMax')); // -1 is last record
LET varToday = Num(Today());
MasterCalendar:
LOAD
monthstart([Pay Date]) >= monthstart(AddMonths(Today(),-12)) as PaidInLast12MonthsFlag,
dual(date(makedate(year([Pay Date]),num(month([Pay Date]))),'MMM-yyyy'),year([Pay Date]) * 100 + num(month([Pay Date]))) as PayMonthYear
[Pay Date];
LOAD
date($(varMinDate) + RecNo() - 1,'DD/MM/YYYY') as [Pay Date]
AUTOGENERATE num($(varMaxDate)) - num($(varMinDate)) + 1;
DROP TABLE MinMax;
因此,在上文中,如果PaidInLast12MonthsFlag
字段的值在过去12个月内发生,则字段-1
等于[Pay Date]
,否则为0
。您可以在set分析表达式中将其用作过滤器。此外,您可以使用PayMonthYear
作为图表维度。