使用 Power BI 度量创建的简单具有条款

时间:2021-03-19 21:44:22

标签: sql powerbi dax measure

我用 SQL 创建了这个简单的表:

create table testTable (
date date not null,
leader varchar(20),
name varchar(20)
)


insert into testTable 
values
('2021-01-01', 'KIM', 'Anders'),
('2021-01-02', 'KIM', 'Annika'),
('2021-01-03', 'KIM', 'Anna'),
('2021-01-04', 'KIM', 'Anna'),
('2021-01-03', 'KIM', 'Annika'),
('2021-01-01', 'JOHAN', 'Sara'),
('2021-01-02', 'JOHAN', 'Sara'),
('2021-01-03', 'JOHAN', 'Sara')

如果可能的话,我试图在 dax 度量中获得以下代码的 ekvivalent 解决方案

select max(leader), name, count(name)
from testTable
group by name
having count(name) >= 2

我要找的结果是。

<头>
领导 测量
2
约翰 1

2 个答案:

答案 0 :(得分:0)

HAVING 视为在分组之后发生的过滤器。所以像

Measure = COUNTROWS(filter(SUMMARIZECOLUMNS('Table'[Name],"Count",count('Table'[Name])), [Count]>=2))

这是一种完全在 DAX 中呈现 DAX 问题测试数据的简单方法:

testTable = SELECTCOLUMNS
(
    {
         (date(2021,01,01),"KIM","Anders")
        ,(date(2021,01,02),"KIM","Annika")
        ,(date(2021,01,03),"KIM","Anna")
        ,(date(2021,01,04),"KIM","Anna")
        ,(date(2021,01,03),"KIM","Annika")
        ,(date(2021,01,01),"JOHAN","Sara")
        ,(date(2021,01,02),"JOHAN","Sara")
        ,(date(2021,01,03),"JOHAN","Sara")
    }, "date",   [Value1]
     , "leader", [Value2]
     , "name",   [Value3]
)

与在 SQL Server 中创建表并通过 Power Query 加载它或使用 PowerBI 中的“输入数据”表单(在 Power Query 中创建表)相比,这种重现方案要简单得多。

答案 1 :(得分:0)

编辑:将所需结果添加到问题后,答案更改如下

一个可能的解决方案是实施一个措施来计算所选领导者的姓名出现次数超过一次

# Names ge 2 =
COUNTROWS (
    FILTER (
        VALUES ( Test[name] ),
        CALCULATE ( COUNTROWS ( Test ), ALLEXCEPT ( Test, Test[name], Test[leader] ) ) > 1
    )
)

这是一个关于 dax.do

的工作示例
DEFINE
    TABLE Test =
        DATATABLE (
            "date", DATETIME,
            "leader", STRING,
            "name", STRING,
            {
                { "2021-01-01", "KIM", "Anders" },
                { "2021-01-02", "KIM", "Annika" },
                { "2021-01-03", "KIM", "Anna" },
                { "2021-01-04", "KIM", "Anna" },
                { "2021-01-03", "KIM", "Annika" },
                { "2021-01-01", "JOHAN", "Sara" },
                { "2021-01-02", "JOHAN", "Sara" },
                { "2021-01-03", "JOHAN", "Sara" }
            }
        )
    MEASURE Test[# Names ge 2] =
        COUNTROWS (
            FILTER (
                VALUES ( Test[name] ),
                CALCULATE ( COUNTROWS ( Test ), ALLEXCEPT ( Test, Test[name], Test[leader] ) ) > 1
            )
        )
EVALUATE
SUMMARIZECOLUMNS (
    Test[leader],
    "# Names ge 2", [# Names ge 2]
)

和结果输出

output table

我已经在原始 dax.do 上留下了我之前回答的度量,它返回了这个输出

output table old