问题标签 [excel-pivot]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
excel - SQL Server 表格模型 (v2) 的意外 Excel 数据透视行为
我们将 Office 365 中的 Excel 与 SQL Server 2019 表格模型一起使用
关于从 DAX 请求计算的级别,我有 Excel Pivot 的“奇怪”行为。
我创建了 3 个简单 (SQL Server) 表,MyDim、DimColour 和 MyFact
MyDim 表中的 BrandName 和 ItemName 之间存在隐式层次结构(未强制执行)。
我无法强制执行这一点,因为没有任何东西可以说一件物品只能属于一个品牌。
我创建了一个非常基本的度量来汇总事实,尽管我在这里并不需要它
我还创建了 2 个更有趣的附加措施
最低级别总是返回一个值,无论事实表中是否有行。
只要我们不过滤 ItemName,LowestLevelButItem 就会返回一个值
现在,这是困扰我们的行为......
在 Excel 数据透视表中打开多维数据集,过滤颜色蓝色和黄色
结果1,好的
这是正确的结果。这里没问题。
添加度量 LowestLevelButItem...
结果 2,出乎意料
现在,这不是我们想要的结果……我根本不希望在这个结果中看到“品牌 A”
它表明 D4 中显示的度量已在与 D5 和 D6 不同的级别进行评估。
D5 和 D6 在项目级别进行评估,正如预期的那样,而 D4 在更高级别进行评估,因为在项目级别没有匹配的行......
现在,添加度量 LowestLevel
结果3,好的
现在,我明白了这个结果。
因为 LowestLevel 总是返回一个值,所以它使 Brand A / Item 1 可见,这会强制在 Item 级别评估度量 LowestLevelButItem,因此为 blank()。
我遇到的问题是第二个结果......
问题
如果下面没有合适的项目,我怎么能强制数据透视表不归还品牌?
SSMS 行为
如果我在 SSMS 中浏览我的多维数据集,我会得到我期望的结果,即我的度量始终只在叶级别进行评估,并且除非它们具有叶级别成员,否则不会返回行。
SSMS 结果 1,相同
SSMS 结果 2
SSMS 没有返回没有项目成员的“品牌 A”行
SSMS 结果 3
重现的 SQL 脚本
为结果 2 查询生成的 MDX
- 通过 SSMS(产生我想要的结果)
- Excel MDX