【问题标题】:Convert SQL subquery to Power BI DAX将 SQL 子查询转换为 Power BI DAX
【发布时间】:2021-12-08 10:37:41
【问题描述】:

作为 PowerBI 的新手,我非常纠结于这个问题。我想创建一个自定义度量,可以使用如下所示的 SQL 语句轻松解决:

select count(*) from Task
 where case_num in(
    select case_num from Task
     where task_type="DDD") sub

有人可以帮我解决这个问题吗?谢谢!!!!!!

The table is roughly like this

【问题讨论】:

  • 使用您的预期输出添加示例数据。

标签: powerbi subquery dax measure


【解决方案1】:

您可以隔离具有特定任务类型的 case_nums

VAR tbl = CALCULATETABLE(VALUES('Table'[case_num]),'Table'[task_type] = "DDD")

然后将该表应用为过滤器:

Measure = 
VAR tbl = CALCULATETABLE(VALUES('Table'[case_num]),'Table'[task_type] = "DDD")
RETURN CALCULATE(COUNT('Table'[case_num]), TREATAS(tbl,'Table'[case_num]))

或

Measure = 
VAR tbl = CALCULATETABLE(VALUES('Table'[case_num]),'Table'[task_type] = "DDD")
RETURN CALCULATE(COUNT('Table'[case_num]), 'Table'[case_num] IN tbl)

【讨论】:

    【解决方案2】:

    试试这个方法

    _count =
    CALCULATE ( COUNT ( Task[CaseNum] ), FILTER ( Task, Task[task_type] = "DDD" ) )
    

    Edit

    如果你有少量任务要在过滤器中使用,你可以使用这个

    Measure = 
    CALCULATE ( COUNT ( Task[Case] ), FILTER ( Task, Task[task_type] IN {"BB","AA","DDD","CC"}))
    

    如果您有大量任务不想手动输入过滤器,请先创建一个查找表并在度量中使用它

    TaskLookUpTable = DATATABLE ( --a long list of task; hence taskTbl
        "task_type", STRING,   
        {
            { "BB"},
            { "AA"},
            { "DDD"},
            { "CC"}
        }
    )
    
    Measure2 = --create the above table first before writing this measure
    CALCULATE (
        COUNT ( Task[Case] ),
        TREATAS ( VALUES ( 'TaskLookUp'[task_type] ), Task[task_type] )
    )
    

    【讨论】:

    • 谢谢!!!但恐怕事实并非如此。你能检查一下我刚刚添加的图像吗?一个案例可以有不同的任务类型。只有一个“DDD”类型的记录,但我想找出所有具有这些特定 case_num(s) 的行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    相关资源
    最近更新 更多