【问题标题】:How to do DISTINCT on multiple columns in DAX query?如何在 DAX 查询中对多个列执行 DISTINCT?
【发布时间】:2020-04-30 09:12:48
【问题描述】:

我对 DAX 世界很陌生。我正在尝试在 DAX 查询中的多个列上获取不同的记录,类似于我在 SQL 中的方式。我尝试根据查询设计器中的模型连接两个表,这给了我以下查询。

EVALUATE SUMMARIZECOLUMNS(
'Dim_Products'[SaleCode], 
'Dim_Products'[ProducttName],  
'Dim_TimeZone'[StartDate], 
'Dim_TimeZone'[StartTime], 
'Dim_TimeZone'[EndDate], 
'Dim_TimeZone'[EndTime], 
'Dim_TimeZone'[Variation],  
"Fact_Sales_Count", [Fact_Sales_Count]
)

运行上述是给出重复的记录。当我试图从 SSRS 调用它时,如何获取不同的记录?

谢谢!

【问题讨论】:

    标签: sql-server reporting-services dax ssas-tabular


    【解决方案1】:

    看:https://www.sqlbi.com/articles/introducing-summarizecolumns/

    您可以按照参数列表中的约定从“分组依据”列切换到“汇总”列,再到 SUMMARIZECOLUMNS。

    EG:

    EVALUATE SUMMARIZECOLUMNS(
    'Dim_Products'[SaleCode], 
    'Dim_Products'[ProducttName],  
    'Dim_TimeZone'[StartDate], 
    'Dim_TimeZone'[StartTime], 
    'Dim_TimeZone'[EndDate], 
    'Dim_TimeZone'[EndTime], 
    'Dim_TimeZone'[Variation],  
    "Fact_Sales_Count", sum([Fact_Sales_Count])
    )
    

    【讨论】:

    • 谢谢大卫!我尝试将“总和”添加到查询中,但仍然看到重复项。我正在创建一个共享数据集并尝试从上述查询中调用每个报告中的特定字段。
    【解决方案2】:

    以防万一这对将来的某人有所帮助。

    EVALUATE 
    DISTINCT(
    SELECTCOLUMNS('Dim_Products',
    'Dim_Products'[SaleCode], 
    'Dim_Products'[ProducttName],  
    'Dim_TimeZone'[StartDate], 
    'Dim_TimeZone'[StartTime], 
    'Dim_TimeZone'[EndDate], 
    'Dim_TimeZone'[EndTime], 
    'Dim_TimeZone'[Variation]))
    

    而且,如果我们需要添加过滤器:

        EVALUATE 
            DISTINCT(
            SELECTCOLUMNS(
             FILTER('Dim_Products', 'Dim_Products'[SaleCode] = 123 && ('Dim_Products'[ProducttName] = "ABC" || 'Dim_Products'[ProducttName] = "XYZ" )),
            'Dim_Products'[SaleCode], 
            'Dim_Products'[ProducttName],  
            'Dim_TimeZone'[StartDate], 
            'Dim_TimeZone'[StartTime], 
            'Dim_TimeZone'[EndDate], 
            'Dim_TimeZone'[EndTime], 
            'Dim_TimeZone'[Variation]))
    

    【讨论】:

    • 您好 Jan,对不起,但是如果我准确地运行您的查询但使用不同的名称,当然,我有这个例外:未处理的异常。 System.Data.OleDb.OleDbException (0x80004005): SELECTCOLUMNS 除了列名作为参数号。并使用过滤器运行您的第二个查询,它还返回一个语法错误。
    • 请测试您的答案,并进行相应的编辑。谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 2014-05-01
    • 1970-01-01
    • 2011-08-19
    • 2016-01-03
    • 1970-01-01
    • 2019-11-08
    相关资源
    最近更新 更多