使用 MDX 查询从日期范围中获取特定日期的时间表
Posted
技术标签:
【中文标题】使用 MDX 查询从日期范围中获取特定日期的时间表【英文标题】:Get schedules of particular date from date ranges with MDX query 【发布时间】:2019-04-24 16:06:07 【问题描述】:这个问题我已经发过很多次了,可惜没人能看懂,对不起我的英语不好:( 我重新制定...
我有以下事实表
我想在所有日期范围(DATE_DEB、DATE_FIN)中获取与特定日期和星期几 (JOUR) 匹配的记录
我可以像这样在 SQL 中做到这一点:
SELECT DATE_DEB,
DATE_FIN,
ID_HOR,
to_char(HR_DEB,'hh24:mi:ss') as HR_DEB,
to_char(HR_FIN,'hh24:mi:ss') as HR_FIN,
JOUR
FROM GRP_HOR HOR, GRP
WHERE GRP.ID_ACTIV_GRP = HOR.ID_ACTIV_GRP
AND TO_DATE('1998-01-08', 'YYYY-MM-DD') between DATE_DEB and DATE_FIN
AND 1 + TRUNC(TO_DATE('1998-01-08', 'YYYY-MM-DD')) - TRUNC(TO_DATE('1998-01-08', 'YYYY-MM-DD'), 'IW') = JOUR
所以,我将获得 29 条记录(见下文),它们包含在每个范围内并与星期几 (JOUR) 匹配,之后我想将它们放大几小时(HR_DEB、HR_FIN)。
问题是,最好的方法是什么?
创建 2 个日期维度并将它们与 DATE_DEB、DATE_FIN 链接。
创建 2 个时间维度并将它们与 HR_DEB、HR_FIN 链接。
如何在 MDX 中实现 between SQL 子句?或大于或小于?
提前谢谢你。
输出:
【问题讨论】:
(增加)有趣的问题 【参考方案1】:要在MDX
中指定日期范围,只需使用冒号运算符:
这是MSDN
上的文档:https://docs.microsoft.com/en-us/sql/mdx/range-mdx?view=sql-server-2017
这是他们给出的例子:
With Member [Measures].[Freight Per Customer] as
(
[Measures].[Internet Freight Cost]
/
[Measures].[Customer Count]
)
SELECT
[Ship Date].[Calendar].[Month].&[2004]&[1] : [Ship Date].[Calendar].[Month].&[2004]&[3] ON 0,
[Product].[Category].[Category].Members ON 1
FROM
[Adventure Works]
WHERE
([Measures].[Freight Per Customer])
【讨论】:
我终于能够通过日期和时间维度的中间桥实现多对多关系,多维数据集的构建时间增加了一点(15 分钟),但它对我来说是完美的,谢谢你们非常好!以上是关于使用 MDX 查询从日期范围中获取特定日期的时间表的主要内容,如果未能解决你的问题,请参考以下文章