【发布时间】:2022-01-20 08:16:29
【问题描述】:
刚开始使用 Power BI...
将 Power BI 与与 SQL Server 数据库的 DirectQuery 连接一起使用。 (我怀疑 SQL Server 是否与该问题相关,但如果是,我会将其添加到标签中。请发表评论。)
我创建了一个“新列”,定义为:
FirstOfMonth = DATEVALUE('FiscalMonth'[CalYr] & "-" & RIGHT("0" & 'FiscalMonth'[CalMonthNum], 2) & "-01")
我正在使用使用 Kimball 方法星型模式开发的数据集市。这意味着存在维度的异常记录。因此 FiscalMonth 表的一部分可能如下所示:
+---------------+--------+-------------+--------------+---------+
| FiscalMonthId | CalYr | CalMonthNum | CalMonthName | CalYrMo |
+---------------+--------+-------------+--------------+---------+
| 0 | <NULL> | <NULL> | DWUnk | DWUnk |
| 1 | <NULL> | <NULL> | DWNA | DWNA |
| 2 | <NULL> | <NULL> | DWNH | DWNH |
| 3 | <NULL> | <NULL> | DWNR | DWNR |
| 4 | <NULL> | <NULL> | DWErr | DWErr |
| 5 | <NULL> | <NULL> | DWSys | DWSys |
| 6 | <NULL> | <NULL> | | |
| 5275 | 1991 | 7 | July | 199107 |
| 5276 | 1991 | 8 | August | 199108 |
| 5277 | 1991 | 9 | September | 199109 |
+---------------+--------+-------------+--------------+---------+
如您所见,CalYr 或 CalMonthNum 在某些情况下可能为空。但我知道我需要的数据不会涉及任何异常记录(ID 范围 0-99),所以我在“过滤所有页面”部分添加了一个过滤器,希望不会出现问题。
FiscalMonthId is greater than 99
这工作正常,直到...
我在页面上放置了两个可视化。一个是折线图,另一个是表格。它们都使用相同的列(FirstOfMonth 计算如上,ProgramCode 和 ExpenditureAmount 直接来自数据库)。当我点击一个 vis 过滤它时,另一个消失并显示一条消息:
Can't display the visual. See details
当我点击See details时,我得到:
Couldn't load the data for this visual
Conversion failed when converting date and/or time from character string.. The exception was raised by the IDataReader interface.
但是我的DATEVALUE 函数(在我的全局过滤器的上下文中)没有使用会导致此问题的数据值。
当我尝试添加度量时,也会发生同样的事情。我尝试了一些不同的东西。最近在TOTALYTD 函数中添加了一个过滤器:
Measure = TOTALYTD(sum(ExpenditureMonthlySummaryFact[ExpenditureAmount]),'FiscalMonth'[FirstOfMonth],'FiscalMonth'[FiscalMonthId]>99)
当我将度量添加到 vis 时,我收到与上面相同的错误消息。
在执行任何类型的计算或过滤器时,Power BI 似乎忽略了我的全局过滤器。
没有改变我们的数据集市设计政策,我该如何克服这个问题?
【问题讨论】: