Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/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_Ssms_Mdx - Fatal编程技术网

Ssas 在查询设计器中展开MDX查询以接受

Ssas 在查询设计器中展开MDX查询以接受,ssas,ssms,mdx,Ssas,Ssms,Mdx,以下查询在SSMS中运行良好,但在查询设计器中无法运行,因为我在列轴上定义了一个维度: SELECT NON EMPTY { [Measures].[Amount] * [Cost Type].[Cost Type].[Cost Type] } ON COLUMNS , NON EMPTY { [Empl].[Name].[Name] * [Date].[Calendar].[Month] }

以下查询在SSMS中运行良好,但在查询设计器中无法运行,因为我在列轴上定义了一个维度:

SELECT 
    NON EMPTY { 
        [Measures].[Amount]
        * [Cost Type].[Cost Type].[Cost Type]
    } ON COLUMNS
    , NON EMPTY { 
        [Empl].[Name].[Name]
        * [Date].[Calendar].[Month]
    } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS
FROM 
    Cube
为了解决这个问题,我用以下方式展平了查询:

SELECT t.* 
FROM (

    SELECT 
        NON EMPTY { 
            [Measures].[Amount]
            * [Cost Type].[Cost Type].[Cost Type]
        } ON COLUMNS
        , NON EMPTY { 
            [Empl].[Name].[Name]
            * [Date].[Calendar].[Month]
        } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS
    FROM 
        Cube

) AS t
这在SSMS中非常有效,就像第一个查询一样。但是,这会导致查询设计器中出现以下错误:

TITLE: Microsoft Visual Studio
------------------------------

Query preparation failed.

------------------------------
ADDITIONAL INFORMATION:

Please verify that the query is an MDX one and not DMX. (Microsoft.AnalysisServices.Controls)

------------------------------
BUTTONS:

OK
------------------------------
这就是我想要的结果:

Name     Month     Cost_Type1     Cost_Type2     Cost_Type3
a        january   1.54           1.56           2.43
a        january   3.53           2.34           1.23
b        january   3.53           2.13           4.53

如何在查询设计器(来自BIDS,Visual Studio)中运行此查询?

由于您希望在每个[成本类型]的列上重复[Measures].[Amount]度量,因此除了为每个成本类型创建计算成员之外,您别无选择:

WITH 
MEMBER [Cost_Type1] AS ([Cost Type].[Cost Type].[Cost_Type1], [Measures].[Amount])
MEMBER [Cost_Type2] AS ([Cost Type].[Cost Type].[Cost_Type2], [Measures].[Amount])
MEMBER [Cost_Type3] AS ([Cost Type].[Cost Type].[Cost_Type3], [Measures].[Amount])

SELECT { [Cost_Type1], [Cost_Type2], [Cost_Type3] } ON COLUMNS,
    NON EMPTY { 
        [Empl].[Name].[Name]
        * [Date].[Calendar].[Month]
    } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS
FROM 
    Cube

这是由于BIDS查询设计器中的一个限制-它不允许在“设计时”出现未知数量的列,因此无法在列轴上指定一个集-仅指定单个成员(即使它在SSMS中工作正常)。

您是否尝试使用查询设计器的设计器模式构造此查询(拖放)?然后,您可以切换到MDX模式以查看设计器生成的MDX。我无法在设计器模式下构造查询,因为它不允许我将度量值与维度相结合。为了确保我正确理解您的意思,您的展平数据集应该只显示所有员工在所有月份和所有成本中的金额类型。对吗?在设计器模式下,为什么不从[emp]维度中拖入[Name]属性、[Date]维度的[Calendar]属性中拖入[Month]级别、[Cost Type]维度的[Cost Type]属性,最后拖入[Amount]这将导致每个成本类型都有一个记录,相反,我正在尝试选择一个包含所有成本类型的记录(如刚刚添加的示例所示).Ah,我现在明白了。在查询设计器中,不幸的是,除了为每个成本类型创建计算成员,然后将它们逐个添加到SELECT语句之外,没有其他选项。每个计算成员将只是一个简单的元组:
([Cost Type].[Cost Type].&[1],[Measures].[Amount])
。将此作为答案添加。