Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssas MDX无法将我的表达式识别为元组集?_Ssas_Mdx - Fatal编程技术网

Ssas MDX无法将我的表达式识别为元组集?

Ssas MDX无法将我的表达式识别为元组集?,ssas,mdx,Ssas,Mdx,当有两个成员引用的&[Value]语法被交叉连接时,就会出现以下错误: 查询(3,3)函数要求1参数使用元组集表达式。使用了字符串或数字表达式 请注意,函数中有两个空格,就好像它试图命名一个没有名字的函数一样。我可以用“AdventureWorksDW2008R2”示例数据库重新创建问题 不起作用: SELECT NON EMPTY { [Date].[Day of Month].&[1] * [Sales Territory].[Sales Territory

当有两个成员引用的&[Value]语法被交叉连接时,就会出现以下错误:

查询(3,3)函数要求1参数使用元组集表达式。使用了字符串或数字表达式

请注意,
函数中有两个空格,就好像它试图命名一个没有名字的函数一样。我可以用“AdventureWorksDW2008R2”示例数据库重新创建问题

不起作用:

SELECT
  NON EMPTY
  {
     [Date].[Day of Month].&[1]
    * [Sales Territory].[Sales Territory Country].&[Canada]
    * [Measures].[Sales Amount]
  }
  ON COLUMNS,  
  NON EMPTY
  {
    [Product].[Product Name]   
  }
  ON ROWS
  FROM [Adventure Works]
作品:

SELECT
  NON EMPTY
  {
     [Date].[Day of Month].&[1]
    * {([Sales Territory].[Sales Territory Country].&[Canada])}
    * [Measures].[Sales Amount]
  }
  ON COLUMNS,  
  NON EMPTY
  {
    [Product].[Product Name]   
  }
  ON ROWS
  FROM [Adventure Works]
也适用于:

SELECT
  NON EMPTY
  {
     {([Date].[Day of Month].&[1])}
    * [Sales Territory].[Sales Territory Country].&[Canada]
    * [Measures].[Sales Amount]
  }
  ON COLUMNS,  
  NON EMPTY
  {
    [Product].[Product Name]   
  }
  ON ROWS
  FROM [Adventure Works]
SELECT
  NON EMPTY
  {
     [Date].[Day of Month].&[1]        
    * [Measures].[Sales Amount]
  }
  ON COLUMNS,  
  NON EMPTY
  {
    [Product].[Product Name]   
  }
  ON ROWS
  FROM [Adventure Works]
SELECT
  NON EMPTY
  {
     [Sales Territory].[Sales Territory Country].&[Canada]    
    * [Measures].[Sales Amount]
  }
  ON COLUMNS,  
  NON EMPTY
  {
    [Product].[Product Name]   
  }
  ON ROWS
  FROM [Adventure Works]
也适用于:

SELECT
  NON EMPTY
  {
     {([Date].[Day of Month].&[1])}
    * [Sales Territory].[Sales Territory Country].&[Canada]
    * [Measures].[Sales Amount]
  }
  ON COLUMNS,  
  NON EMPTY
  {
    [Product].[Product Name]   
  }
  ON ROWS
  FROM [Adventure Works]
SELECT
  NON EMPTY
  {
     [Date].[Day of Month].&[1]        
    * [Measures].[Sales Amount]
  }
  ON COLUMNS,  
  NON EMPTY
  {
    [Product].[Product Name]   
  }
  ON ROWS
  FROM [Adventure Works]
SELECT
  NON EMPTY
  {
     [Sales Territory].[Sales Territory Country].&[Canada]    
    * [Measures].[Sales Amount]
  }
  ON COLUMNS,  
  NON EMPTY
  {
    [Product].[Product Name]   
  }
  ON ROWS
  FROM [Adventure Works]
也适用于:

SELECT
  NON EMPTY
  {
     {([Date].[Day of Month].&[1])}
    * [Sales Territory].[Sales Territory Country].&[Canada]
    * [Measures].[Sales Amount]
  }
  ON COLUMNS,  
  NON EMPTY
  {
    [Product].[Product Name]   
  }
  ON ROWS
  FROM [Adventure Works]
SELECT
  NON EMPTY
  {
     [Date].[Day of Month].&[1]        
    * [Measures].[Sales Amount]
  }
  ON COLUMNS,  
  NON EMPTY
  {
    [Product].[Product Name]   
  }
  ON ROWS
  FROM [Adventure Works]
SELECT
  NON EMPTY
  {
     [Sales Territory].[Sales Territory Country].&[Canada]    
    * [Measures].[Sales Amount]
  }
  ON COLUMNS,  
  NON EMPTY
  {
    [Product].[Product Name]   
  }
  ON ROWS
  FROM [Adventure Works]

是什么将我的表达式解释为,如果不是元组集的话?我总是在这类事情上磕磕绊绊,它认为它是字符串或数字表达式,这真的让人困惑。该表达式是一个单元组集(即,一个具有元组的集合,它是多维数据集中的一个特定成员。这(令人困惑地)与元组集不同

由单个元组组成的集合不是元组;MDX将它们解释为集合。某些MDX函数接受元组作为参数,如果传递单个元组集合,则会引发错误。元组和单个元组集合不可互换

至于错误消息,当您看到带有额外空格的“函数”时,它指的是查询中的一个格式错误的集合或元组,该集合或元组没有应用函数(因此在错误消息中没有函数名)


例如,如果您编写了一个类似于
EXCEPT([a].[B].[C],[D].[E].[F])
的查询,并且其中一个参数无效,您将得到一个包含“函数EXCEPT…”的错误。但是,如果您只是有一个定义不正确的集合或元组,则会得到“函数”有两个空格。MSAS的错误报告似乎很差!

表达式是一个单元组集(即,包含一个元组的集合,该元组是多维数据集中的一个特定成员)。这与元组集不同(令人困惑)

由单个元组组成的集合不是元组;MDX将它们解释为集合。某些MDX函数接受元组作为参数,如果传递单个元组集合,则会引发错误。元组和单个元组集合不可互换

至于错误消息,当您看到带有额外空格的“函数”时,它指的是查询中的一个格式错误的集合或元组,该集合或元组没有应用函数(因此在错误消息中没有函数名)


例如,如果您编写了一个类似于
EXCEPT([a].[B].[C],[D].[E].[F])
的查询,并且其中一个参数无效,您将得到一个包含“函数EXCEPT…”的错误。但是,如果您只是有一个定义不正确的集合或元组,则会得到“函数”有两个空格。MSAS的错误报告似乎很差!

这确实令人困惑,因为这两个查询之间似乎没有太大区别。问题在博客文章中描述:

如果用CrossJoin函数替换第一个*运算符,您会发现查询执行得很好

*只是一个以不同方式编写的交叉连接-因此,如果它以一种方式工作,而另一种方式失败-我们可以假设问题在于Analysis Services引擎如何解析*运算符。当您添加交叉连接函数时,您显式返回一个集,然后它使用*与度量值交叉连接,一切正常。在您的工作示例中,您已经使用大括号显式标识了一个集合,从而为引擎提供了继续查询所需的信息-但是当您尝试使用*处理两个成员时,它失败了。从技术上讲,每个成员都是一个集合,应该可以工作,但引擎没有以这种方式解析查询,因此失败了


上面的博文说问题在于MDX的宽大。它让我们不用强烈键入结果(即排除{}以将成员作为一个集合键入)。我自己会称之为bug。:)如果语言让我们在一个地方变得松散,那么它应该在其他地方保持一致。

这确实令人困惑,因为这两个查询之间似乎没有太大区别。问题在博客文章中描述:

如果用CrossJoin函数替换第一个*运算符,您会发现查询执行得很好

*只是一个以不同方式编写的交叉连接-因此,如果它以一种方式工作,而另一种方式失败-我们可以假设问题在于Analysis Services引擎如何解析*运算符。当您添加交叉连接函数时,您显式返回一个集,然后它使用*与度量值交叉连接,一切正常。在您的工作示例中,您已经使用大括号显式标识了一个集合,从而为引擎提供了继续查询所需的信息-但是当您尝试使用*处理两个成员时,它失败了。从技术上讲,每个成员都是一个集合,应该可以工作,但引擎没有以这种方式解析查询,因此失败了


上面的博文说问题在于MDX的宽大。它让我们不用强烈地键入结果(即排除{}来键入一个成员作为一个集合)。我自己会称之为bug。:)如果语言允许我们在一个地方宽松,那么它应该在其他地方保持一致。

谢谢,我知道它们是单元组集。你能更具体地说明我的查询有哪些格式错误吗?它不包括
[Date].[Day of Month].&[1]
[Sales Territory].[Sales Territory Country].&[Canada]
,如果其中一个用括号澄清,以澄清它是一个单元组集
{()}
,则它不包括这两个元组。那么,如果它的格式不好,为什么它在接受哪一个方面如此不一致呢?我在我的帖子中添加了所有有效的变体。我想,如果查询的格式不正确,那么这些都不起作用?但事实上,所有这些工作