自定义列添加到矩阵幂bi像diff,total,avg

时间:2020-06-29 16:32:25

标签: dax powerbi-desktop

我有一个类似下面的输入

DECLARE
    cursor date_list
    IS
        WITH year_dates (active_date) AS
        (
            SELECT to_date('1997-01-01','YYYY-MM-DD')
            FROM DUAL
            UNION ALL
            SELECT active_date + 1
            FROM year_dates
            WHERE active_date < to_date('1998-01-01','YYYY-MM-DD')
        ) SELECT active_date
                FROM year_dates;

        l_date date_list%ROWTYPE;

        l_count NUMBER;
BEGIN
    OPEN date_list;

    LOOP
        FETCH date_list INTO l_date;
        EXIT WHEN date_list%NOTFOUND;

        SELECT COUNT(emplid)
        INTO l_count
        FROM ps_job a
        WHERE effdt = (SELECT max(a1.effdt) FROM ps_job a1 WHERE a1.emplid = a.emplid AND a1.effdt < l_date.active_date)
        AND effseq = (SELECT max(a1.effseq) FROM ps_job a1 WHERE a1.emplid = a.emplid AND a1.effdt = a.effdt)
        AND deptid NOT LIKE 'XX%'
        AND hr_status = 'A'
        AND company = 'ABC';

        dbms_output.put_line(l_date.active_date || ',' || l_count);

    END LOOP;

END;
/

我想计算以行为单位的周数和上周的差额以及最后-过去3周的值

所以我已经制定了以下措施

Name WK pirce 
AA   1   10
BB   2   20
CC   3   30
DD   4   20
AA   4   10
BB   4   20

上周差异

   Total = SUM('Table'[Price])

平均-过去3周的差异

Difference = 
var LWK=CALCULATE(MAX('Table'[WK]),all('Table'))
Var BLWK=CALCULATE(MAX('Table'[WK])-1,all('Table'))
var D1=CALCULATE([Total],'Table'[WK]=LWK)
var D2=CALCULATE([Total],'Table'[WK]=BLWK)
return
IF(ISINSCOPE('Table'[WK]),SUM('Table'[Price]),D1-D2)

使用矩阵我已经达到了以下目标

enter image description here

如果我添加LWK_avg,则会得到以下结果

enter image description here

我想不加测量就得到结果,只是在最后添加LWK_avg

enter image description here

1 个答案:

答案 0 :(得分:1)

在这种情况下,使用强大的查询编辑器将使生活比创建许多措施容易得多。请查看以下步骤(由于难以解释每个步骤,因此我采取了屏幕截图,以便您可以轻松地进行操作)

第一步:

  1. 转到编辑查询/转换数据并执行以下操作:选择Wk列,然后单击数据透视列,如下所示:

enter image description here

  1. 将Null值替换为零

enter image description here

  1. 创建如下所示的自定义列

enter image description here

  1. 使用下面的计算最终创建一个新列

enter image description here

希望这会有所帮助,如有任何混淆,请告诉我。