由于我必须以一种不寻常的方式来生成报告,因此我在钻取方面苦苦挣扎,希望大家能提供帮助。有一些解释性的背景,虽然有些深入,但是很抱歉,这是一个很难解决的问题。
假设我们正在使用WideWorldImporters,并希望显示特定发票的过期情况。在PowerBI报告中,我们可以根据发票的过期程度将其分配给存储桶,然后对金额求和,然后像这样显示数据:
很好。然后,我被要求构建报告,以便最终用户可以使用切片器设置“有效日期”,并且该报告将进行更新以反映如果当前日期实际上是生效日期,则发票的过期时间。有两个问题使这变得烦人:
为解决这个问题,我创建了两个新表:
然后我在表#1的Date列上创建了一个切片器,并创建了一个Measure以读取过滤后的表中最早的日期:
Effective Date = IF(MIN('Effective Date'[CalendarDate]) < TODAY(), TODAY(), MIN('Effective Date'[CalendarDate]))
“发票”表上的一个度量根据“生效日期”度量来计算发票所在的存储桶(如果这可能只是可视化的轴,那真是令人惊讶……但不能:()
Effective Date Bucket =
var CurrentDueDate = MAX('Sales Invoices'[DueDate])
return (
switch(
true(),
datediff(CurrentDueDate, 'Effective Date'[Effective Date], day) <= 0, "0: Not Overdue",
and(datediff(CurrentDueDate, 'Effective Date'[Effective Date], day) > 0, datediff(CurrentDueDate, 'Effective Date'[Effective Date], day) <= 30), "1: 0 - 30",
and(datediff(CurrentDueDate, 'Effective Date'[Effective Date], day) > 30, datediff(CurrentDueDate, 'Effective Date'[Effective Date], day) <= 60), "2: 31 - 60",
and(datediff(CurrentDueDate, 'Effective Date'[Effective Date], day) > 60, datediff(CurrentDueDate, 'Effective Date'[Effective Date], day) <= 90), "3: 61 - 90",
and(datediff(CurrentDueDate, 'Effective Date'[Effective Date], day) > 90, datediff(CurrentDueDate, 'Effective Date'[Effective Date], day) <= 365), "4: 91 - 365",
datediff(CurrentDueDate, 'Effective Date'[Effective Date], day) > 365, "5: 365+"
)
)
最后,我将表#2的“存储桶”列设置为上方视觉效果的“轴”值,并创建了一个新度量来根据所选的“生效日期”计算哪些发票属于每个存储桶:
Bucket Value = (
var CurrentBucket = max('Debt Buckets'[Debt Bucket])
return (
CALCULATE(
sum('Sales InvoiceLines'[LineAmount]),
filter(
ALLSELECTED('Sales Invoices'),
'Sales Invoices'[Effective Date Bucket] = CurrentBucket
)
)
)
)
这也很好;我可以使用日期切片器上的左手点更改“有效日期”度量,这将导致针对每个度量的“有效日期桶”进行更新,然后“桶值”度量刷新并更新视觉效果。都是笨蛋。
这是背景的结尾。问题是:这种方法完全突破了钻探。如果我想钻取到详细信息页面,其中列出了我选择的存储桶中的发票,那么我似乎无法在根据所选生效日期动态更新存储桶的视觉效果上实现该目标。相反,钻取仅返回所有发票,这是没有用的。
我该如何:
a)强制钻取仅取回动态更新存储桶中的发票?
b)重新执行“根据选定的生效日期更新存储桶总数”,这样我一开始就不会遇到此问题?
答案 0 :(得分:0)
Whelp,我尝试通过追溯来做到这一点。相反,我将钻取替换为书签:
不幸的副作用是,由于条形图的位置低于书签链接的z层,因此该视觉效果失去了交叉过滤功能。 C'est la vie。