Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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
Powerbi 幂双-将日期转换为按国家/地区唯一的升序整数_Powerbi_Dax - Fatal编程技术网

Powerbi 幂双-将日期转换为按国家/地区唯一的升序整数

Powerbi 幂双-将日期转换为按国家/地区唯一的升序整数,powerbi,dax,Powerbi,Dax,我有以下样本数据 Country Case Date Austalia 80 22/01/2020 Austalia 100 23/01/2020 Austalia 1200 25/01/2020 Austalia 1500 27/01/2020 America 22 18/02/2020 America 101 22/02/2020 America 200 23/02/2020

我有以下样本数据

Country Case Date Austalia 80 22/01/2020 Austalia 100 23/01/2020 Austalia 1200 25/01/2020 Austalia 1500 27/01/2020 America 22 18/02/2020 America 101 22/02/2020 America 200 23/02/2020 America 2100 28/02/2020 Canada 100 24/02/2020 Canada 1200 12/03/2020 Canada 1500 26/03/2020 Canada 1600 27/03/2020 Germany 99 12/01/2020 Germany 100 18/01/2020 Germany 101 19/01/2020 Germany 102 20/01/2020 France 102 13/03/2020 France 304 16/03/2020 France 504 18/03/2020 France 2455 20/03/2020 France 3455 25/03/2020 我想有一个更多的列说天,它的价值基于以下标准

对于大于99的每个案例值,日期列从0开始,并根据每个国家的唯一日期递增。与上面的country-Australia一样,day列在每一行中的值为null、0、2、4 我的最终表格如下所示

#Country Case Date Day Austalia 80 22/01/2020 null Austalia 100 23/01/2020 0 Austalia 1200 25/01/2020 2 Austalia 1500 27/01/2020 4 America 22 18/02/2020 null America 101 22/02/2020 0 America 200 23/02/2020 1 America 2100 28/02/2020 6 Canada 100 24/02/2020 0 Canada 1200 12/03/2020 17 Canada 1500 26/03/2020 31 Canada 1600 27/03/2020 32 Germany 99 12/01/2020 null Germany 100 18/01/2020 0 Germany 100 19/01/2020 1 Germany 102 20/01/2020 2 France 102 13/03/2020 0 France 304 16/03/2020 3 France 504 18/03/2020 5 France 2455 20/03/2020 7 France 3455 25/03/2020 12
如果有人能帮助创建PowerBI度量值或DAX函数,我将不胜感激。

以下是我为您设计的一些DAX:

DayFromCaseCount99 =
VAR ZERODATE =
    CALCULATE (
        MIN ( 'Table'[Date] ),
        ALLEXCEPT ( 'Table', 'Table'[Country] ),
        'Table'[Case] > 99
    )
VAR DAYS =
    DATEDIFF ( ZERODATE, CALCULATE ( MAX ( 'Table'[Date] ) ), DAY )
RETURN
    IF ( MAX ( 'Table'[Case] ) > 99, days, "n/a" )
首先,我按病例数超过99的国家计算最早的日期。然后我计算筛选上下文中最大日期之间的天数。最后,我再次显示结果,仅显示Case大于99的行


希望有帮助。

创建一个新列并使用以下DAX代码:

Day = 
VAR __country = 'Table'[Country]
VAR __subTable = FILTER( 'Table'; 'Table'[Country] = __country )
VAR __minDate = CALCULATE( MIN( 'Table'[Date] ); __subTable; 'Table'[Value] >= 100 )
VAR __result = DATEDIFF(__minDate; 'Table'[Date]; DAY )
Return IF( 'Table'[Value] < 100; BLANK(); __result )
你应该能够得到下一个结果


我在转换日期时使用了powerBI的“示例列”,看起来它做了一些有趣的事情。很抱歉,输出与您的示例不太匹配,但我认为计算仍然很好。非常感谢Ryan:它起了作用,但我必须输入一些其他值999,而不是n/a,因为它给出了错误表达式,导致变量数据类型无法用于定义计算列。这导致给出负值,而不是n/a。像第一行,而不是n/a,现在它有-6。不过我的问题解决了。。再次感谢:您好,Agustin,您的解决方案在这一行中给出了错误VAR\uu minDate=CALCULATE MIN'Table'[Date]__子表无法确定表'[Value]>=100作为表中列日期的单个值。当度量公式引用包含多个值的列时,可能会发生这种情况,而没有指定聚合(如最小值、最大值、计数或求和)以获得单个结果。虽然如果我从行中删除_子表,我会得到Day列中的值,但都是0,而不是升序。