Ozr*_*ric 5 sql-server dax ssas-tabular
我很难理解如何过滤掉多维表达式的结果.
这是我的数据库架构.
这是我的数据.
Manufacturer
??????????????????????????
? Id ? Name ?
??????????????????????????
? 1 ? Awesome Computers ?
? 2 ? TailSpin Toys ?
??????????????????????????
Item
?????????????????????????????????????????
? Id ? Name ? ManufacturerId ? Stock ?
?????????????????????????????????????????
? 1 ? PC ? 1 ? 40 ?
? 2 ? Server ? 1 ? 10 ?
? 3 ? STB ? 2 ? 80 ?
? 4 ? Console ? 2 ? 50 ?
?????????????????????????????????????????
Part
?????????????????????????????????????????????????????
? Id ? Name ? ItemId ? StatusId ? Stock ?
?????????????????????????????????????????????????????
? 1 ? MBO ? 1 ? 1 ? 100 ?
? 2 ? Processor ? 1 ? 1 ? 100 ?
? 3 ? Server MBO ? 2 ? 2 ? 20 ?
? 4 ? Server processor ? 2 ? 2 ? 20 ?
? 5 ? Main box ? 3 ? 2 ? 40 ?
? 7 ? Adapter ? 3 ? 3 ? 30 ?
? 8 ? Controller ? 4 ? 2 ? 40 ?
? 10 ? Adapter ? 4 ? 1 ? 60 ?
? 11 ? Memory card ? 4 ? 2 ? 80 ?
?????????????????????????????????????????????????????
Status
????????????????????
? Id ? Name ?
????????????????????
? 1 ? No data ?
? 2 ? Available ?
? 3 ? Unavailable ?
????????????????????
Run Code Online (Sandbox Code Playgroud)
我将所有内容导入到表格模型解决方案中.在此之后,我创建了两个措施:
然后我将多维数据集部署到服务器.
通过运行以下MDX查询...
SELECT
NON EMPTY {
[Part].[Name].CHILDREN
} ON ROWS,
{
[Measures].[PartStock]
} ON COLUMNS
FROM [Model]
WHERE (
{
[Status].[Id].&[1]
}
)
Run Code Online (Sandbox Code Playgroud)
...我得到了这个结果集......
?????????????????????????
? ? PartStock ?
?????????????????????????
? Adapter ? 60 ?
? MBO ? 100 ?
? Processor ? 100 ?
?????????????????????????
Run Code Online (Sandbox Code Playgroud)
......没关系.
但是,运行此MDX查询时...
SELECT
NON EMPTY {
[Item].[Name].CHILDREN
} ON ROWS,
{
[Measures].[ItemStock]
} ON COLUMNS
FROM [Model]
WHERE (
{
[Status].[Id].&[1]
}
)
Run Code Online (Sandbox Code Playgroud)
......我得到了这个结果集......
???????????????????????
? ? ItemStock ?
???????????????????????
? Console ? 50 ?
? PC ? 40 ?
? Server ? 10 ?
? STB ? 80 ?
???????????????????????
Run Code Online (Sandbox Code Playgroud)
我期待ItemStock表中的项目将被Part表过滤掉为多对多关系.例如,MBO,处理器和适配器都引用了第1项和第4项,因此结果将受限于它们,结果应如下所示:
???????????????????????
? ? ItemStock ?
???????????????????????
? Console ? 50 ?
? PC ? 40 ?
???????????????????????
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
小智 0
MDX 对我来说是未知的,但这里是一个纯粹的 SQL 解释。
你的模型实际上是这样的:
要获取具有特定 [状态] 的 [零件] 的 [项目],我将使用以下纯 SQL:
SELECT Item.Name
FROM Item INNER JOIN Part ON Item.Id = Part.ItemID
WHERE Part.StatusID = 1;
Run Code Online (Sandbox Code Playgroud)
我可以在您的示例中看到您使用 FROM [Model],但您的设置中没有名为 Model 的表 - 因此这可能是您应该研究的 VIEW 或 MDX 的某些功能。对于 [Model] 视图,表之间的 JOIN 可能是错误的。
| 归档时间: |
|
| 查看次数: |
164 次 |
| 最近记录: |