mdx - MDX中动态年份过滤器的问题
问题描述
我在 Azure 数据工厂中使用了以下查询(这是复制操作的来源):
SELECT
{ [Measures].[0INV_QTY],
[Measures].[0NET_VAL_S] }
ON COLUMNS,
NON EMPTY
{ [0CUST_SALES].[LEVEL01].MEMBERS *
[0SALESORG].[LEVEL01].MEMBERS *
[0COMPANY].[LEVEL01].MEMBERS *
[0MATERIAL].[LEVEL01].MEMBERS *
[ZDEBITOR].[LEVEL01].MEMBERS *
[0FISCPER].[LEVEL01].MEMBERS *
[0DEB_CRED].[LEVEL01].MEMBERS *
[0BILLTOPRTY].[LEVEL01].MEMBERS *
[0DOC_CATEG].[LEVEL01].MEMBERS *
[0SHIP_TO].[LEVEL01].MEMBERS }
DIMENSION PROPERTIES
[0SALESORG].[20SALESORG],
[0COMPANY].[20COMPANY],
[0CUST_SALES].[80CUST_SALES],
[0CUST_SALES].[20CUST_GRP1],
[0CUST_SALES].[20PMNTTRMS],
[ZDEBITOR].[20CRED_LIMIT],
[0MATERIAL].[20MATERIAL],
[0DEB_CRED].[20DEB_CRED],
[0BILLTOPRTY].[20BILLTOPRTY],
[0DOC_CATEG].[20DOC_CATEG],
[0SHIP_TO].[20SHIP_TO],
[0FISCPER].[80FISCPER]
ON ROWS
FROM $0SD_C03
WHERE ({[0CALYEAR].[2020], [0CALYEAR].[2021], [0CALYEAR].[2018], [0CALYEAR].[2019]})
在这里,我想用类似的东西替换 WHERE,Cast(YEAR(GETDATE())-4 as varchar(10))
现在我对 MDX 真的很陌生,但我一直卡住。谁能指出我正确的方向?
所以我想要实现的是不必每年调整查询并且只能拥有过去 4 年。
解决方案
如果您在 MDX 中寻找如下 SQL 等价物
SELECT ... From ... WHERE date > DATEADD(year,-4,GETDATE())
尝试使用“with member”和函数parallelperiod。
CREATE MEMBER CurrentCube.Measures.[Last4Years] AS
ParallelPeriod( [Date].[Date].[Date Yr], 4, StrToMember(“[Date].[Date].&[” + Format(now(), “yyyyMMdd”) + “]”))
: StrToMember(“[Date].[Date].&[” + Format(now(), “yyyyMMdd”) + “]”)
;
推荐阅读
- javascript - 如何使用任何其他关注者列表中的javascript动态单击instagram上的关注按钮?
- java - WSDL 客户端调用失败
- azure-functions - 为什么“重播”的行为可以确保 Azure 持久函数中的可靠执行?
- amazon-web-services - 尝试使用 golang 在 cloudwatch 上放置 LogEvents 时出现 SerializationException
- python - 如何在 folium 中添加两个 choropleth 层并让它们像一个特征组一样工作?
- c# - 隐藏“编辑”按钮上的下拉列表并显示“添加”按钮单击
- swift - 具有通用方法的 Swift 协议:无效的重新声明实现
- notifications - 如何使用 Flutter 向 OneSignal 发送标签或数据
- javascript - 如果在选定标签中选择了值,则希望从数据库中获取多个详细信息
- android - 按钮没有显示任何颜色..即使是默认的