SQL到MDX查询转换
下面是SQL查询:SQL到MDX查询转换,sql,mdx,Sql,Mdx,下面是SQL查询: select date(actor_creation_date),count(*) from fse_master group by (actor_creation_date) limit 3; 到目前为止,我已经能够得出以下结论: with MEMBER [measures].[actor creation date] AS COUNT(([Measures].[actor creation date])) select [Measures].[actor creat
select date(actor_creation_date),count(*) from fse_master group by (actor_creation_date) limit 3;
到目前为止,我已经能够得出以下结论:
with MEMBER [measures].[actor creation date] AS COUNT(([Measures].[actor creation date]))
select [Measures].[actor creation date] on columns,
order([fse_master].members ,[Measures].[actor creation date],desc)
on rows
from [fse_masters]
您正在使用与现有度量值相同的名称定义度量值-这是否会导致异常 成员[measures]。[actor creation date]为 计数(([Measures].[actor creation date]) 我认为,对于任何层次结构的成员,每个成员都有一个度量值,所以您的脚本只会为每个计数生成一个度量值 在AdvWrks中,我这样做:
WITH
MEMBER [Measures].[x] AS
Count([Measures].[Internet Sales Amount])
SELECT
{
[Measures].[Internet Sales Amount]
,[Measures].[x]
} ON 0
,[Product].[Product Categories].[Subcategory] ON 1
FROM [Adventure Works];
它返回以下内容:
是否可以将度量值添加到多维数据集中以满足您的需求?它需要包含相关关系和度量类型,即计数。您不应该混淆“集合”和“度量”。度量值只是一个数字/字符串实体,本质上是逻辑的。在本质上,你无法计算一些合乎逻辑的东西。它需要是物理性质的可数。在MDX术语中,它需要是一个集合。更精确地说,是一组项目
select date(actor_creation_date),count(*)
from fse_master
group by (actor_creation_date)
limit 3;
在查询中,actor\u creation\u date
实际上是数据库中存在的一组内容(日期)。它本质上是物理的。在RDBMS术语中,这是一个列。在MDX术语中,这需要是一个集合
如果你有一个日期度量,你不能简单地期望在它上面加上一个计数,并期望它工作
COUNT([measures].[actor creation date])
转换为
COUNT({12345})
这是一个集合的计数,该集合只包含一个值成员。它的输出总是一个
您需要的是在一组日期上运行COUNT
函数
您必须有一个日期维度,该维度将参与者创建日期作为属性之一
让我们假设它如下所示:
[Date].[actor creation date].[actor creation date]
现在,您尝试拥有一个计算过的成员,该成员将保存每个日期的计数
WITH MEMBER Measures.CountOfDate
AS
COUNT([Date].[actor creation date].[actor creation date].CURRENTMEMBER)
limit 3
建议您选择前3个日期HEAD
函数会处理这个问题
最后一个问题是:
SELECT HEAD([Date].[actor creation date].[actor creation date].MEMBERS, 3) ON 1,
Measures.CountOfDate ON 0
FROM [fse_masters]
编辑-正如@whytheq所说,我最初的尝试是不正确的
您可以尝试以下几行:
WITH SET ActorCreationDates AS
[Date].[actor creation date].[actor creation date].MEMBERS
MEMBER Measures.CountOfDate
AS
COUNT(EXISTING ActorCreationDates)
SELECT HEAD(ActorCreationDates, 3) ON 1,
Measures.CountOfDate ON 0
FROM [fse_masters]
或者,如果您需要所有记录,而不仅仅是前三名,那么:
SELECT DISTINCT(ActorCreationDates) ON 1,
Measures.CountOfDate ON 0
FROM [fse_masters]
EXISTING
子句计算当前上下文中的“CountOfDate”,即轴1上的特定成员。sourav-(upped)对于集合和计数的解释,很高兴您有耐心。我不同意你的度量。CountOfDate
作为。如果你有[Date].[actor creation Date].[actor creation Date].[actor creation Date],那么CountOfDate
只能是单个成员。成员在一个轴上-因此你的度量值将始终是1(你可以在AdvWrks中测试)@whytheq谢谢你指出这一点!我已经编辑了我的答案。我喜欢那个额外的脚本-你能添加一个AdvWrks等效请我想玩一下。