我正在创建一个仪表板,以比较我们通过数据库执行的某些负载的性能。仪表板获取有关加载日期,要加载的实体,加载类型,记录数和拒绝数的数据。在仪表板上,您可以选择要检查的负载的日期,实体和负载的类型。为了进行比较,我创建了KPI:第一个比较第一个负载的拒绝数量与所选负载(选择的日期)的拒绝数量,第二个比较所选负载的拒绝数量对着最后一个。
第一个和最后一个负载的负载数均由度量创建。首先,计算第一个和最后一个负载:
Primera Carga = CALCULATE(MIN(Rechazos[CARGA]),FILTER(ALL(Rechazos),Rechazos[TIPO_CARGA]==SELECTEDVALUE(Rechazos[TIPO_CARGA]) && Rechazos[TIPO_CONTADOR]==SELECTEDVALUE(Rechazos[TIPO_CONTADOR])))
Última Carga = CALCULATE(MAX(Rechazos[CARGA]),FILTER(ALL(Rechazos),Rechazos[TIPO_CARGA]==SELECTEDVALUE(Rechazos[TIPO_CARGA]) && Rechazos[TIPO_CONTADOR] == SELECTEDVALUE(Rechazos[TIPO_CONTADOR])))
'Primera Carga'代表首次装载,'ÚltimaCarga'代表最后装载。两者都是与执行日期相关的代码,编码为“ yyyymmdd”。
一旦定义了负载,两个负载中的拒绝次数...
Nº Rechazos =
var valor_codigo_venta = SELECTEDVALUE(CODIGO_VENTA[CODIGO_VENTA])
RETURN (
IF(ISBLANK(valor_codigo_venta),
IF(ISBLANK(SUMX(FILTER(all(Rechazos),Rechazos[CARGA]==SELECTEDVALUE(Rechazos[CARGA])
&& Rechazos[TIPO_CONTADOR]==SELECTEDVALUE(Tipo_Contador[TIPO_CONTADOR])
&& Rechazos[TIPO_CARGA]==SELECTEDVALUE(TIPO_CARGA[TIPO_CARGA])
),Rechazos[NUM_RECHAZOS])),
0,
SUMX(FILTER(all(Rechazos),Rechazos[CARGA]==SELECTEDVALUE(Rechazos[CARGA])
&& Rechazos[TIPO_CONTADOR]==SELECTEDVALUE(Tipo_Contador[TIPO_CONTADOR])
&& Rechazos[TIPO_CARGA]==SELECTEDVALUE(TIPO_CARGA[TIPO_CARGA])
),Rechazos[NUM_RECHAZOS]))
,IF(ISBLANK(SUMX(FILTER(all(Rechazos),Rechazos[CARGA]==SELECTEDVALUE(Rechazos[CARGA])
&& Rechazos[TIPO_CONTADOR]==SELECTEDVALUE(Tipo_Contador[TIPO_CONTADOR])
&& Rechazos[TIPO_CARGA]==SELECTEDVALUE(TIPO_CARGA[TIPO_CARGA])
&& Rechazos[CODIGO_VENTA]==valor_codigo_venta
),Rechazos[NUM_RECHAZOS])),0,SUMX(FILTER(all(Rechazos),Rechazos[CARGA]==SELECTEDVALUE(Rechazos[CARGA])
&& Rechazos[TIPO_CONTADOR]==SELECTEDVALUE(Tipo_Contador[TIPO_CONTADOR])
&& Rechazos[TIPO_CARGA]==SELECTEDVALUE(TIPO_CARGA[TIPO_CARGA])
&& Rechazos[CODIGO_VENTA]==valor_codigo_venta
),Rechazos[NUM_RECHAZOS]))
)
)
首先,我计算出一个度量,根据选择结果给出拒绝的数量。后来,对于最后一次和第一次加载...
Nº Rechazos Primera =
var valor_codigo_venta = SELECTEDVALUE(CODIGO_VENTA[CODIGO_VENTA])
RETURN(
IF(ISBLANK(valor_codigo_venta),
CALCULATE([Nº Rechazos],
FILTER(all(Rechazos),
Rechazos[TIPO_CONTADOR]==SELECTEDVALUE(Tipo_Contador[TIPO_CONTADOR])
&& Rechazos[TIPO_CARGA]==SELECTEDVALUE(TIPO_CARGA[TIPO_CARGA])
&& Rechazos[CARGA]==**[Primera Carga]**
)
),
CALCULATE([Nº Rechazos],
FILTER(all(Rechazos),
Rechazos[TIPO_CONTADOR]==SELECTEDVALUE(Tipo_Contador[TIPO_CONTADOR])
&& Rechazos[TIPO_CARGA]==SELECTEDVALUE(TIPO_CARGA[TIPO_CARGA])
&& Rechazos[CARGA]==**[Primera Carga]**
&& Rechazos[CODIGO_VENTA]==SELECTEDVALUE(Rechazos[CODIGO_VENTA])
)
)
)
)
Nº Rechazos Última =
var valor_codigo_venta = SELECTEDVALUE(CODIGO_VENTA[CODIGO_VENTA])
RETURN(
IF(ISBLANK(valor_codigo_venta),
CALCULATE([Nº Rechazos],
FILTER(all(Rechazos), Rechazos[TIPO_CONTADOR]==SELECTEDVALUE(Tipo_Contador[TIPO_CONTADOR])
&& Rechazos[TIPO_CARGA]==SELECTEDVALUE(TIPO_CARGA[TIPO_CARGA])
&& Rechazos[CARGA]==**[Última Carga]**
)
),
CALCULATE([Nº Rechazos],
FILTER(all(Rechazos), Rechazos[TIPO_CONTADOR]==SELECTEDVALUE(Tipo_Contador[TIPO_CONTADOR])
&& Rechazos[TIPO_CARGA]==SELECTEDVALUE(TIPO_CARGA[TIPO_CARGA])
&& Rechazos[CARGA]==**[Última Carga]**
&& Rechazos[CODIGO_VENTA]==SELECTEDVALUE(Rechazos[CODIGO_VENTA])
)
)
)
)
现在,我想将所选负载与前一个负载进行比较。为此,我创建了一个度量,也给了我以前的负载:
Anterior Carga = CALCULATE(MAX(Rechazos[CARGA])
,FILTER(ALL(Rechazos)
,Rechazos[TIPO_CARGA]==SELECTEDVALUE(Rechazos[TIPO_CARGA])
&& Rechazos[TIPO_CONTADOR] == SELECTEDVALUE(Rechazos[TIPO_CONTADOR])
&& **Rechazos[FECHA_CARGA]<SELECTEDVALUE(Rechazos[FECHA_CARGA])**
)
)
因此,通过这种计算,将很简单,只需更改前面一种方法中的过滤器即可获得我的结果,...
Nº Rechazos Anterior =
var valor_codigo_venta = SELECTEDVALUE(CODIGO_VENTA[CODIGO_VENTA])
RETURN(
IF(ISBLANK(valor_codigo_venta),
CALCULATE([Nº Rechazos],
FILTER(all(Rechazos), Rechazos[TIPO_CONTADOR]==SELECTEDVALUE(Tipo_Contador[TIPO_CONTADOR])
&& Rechazos[TIPO_CARGA]==SELECTEDVALUE(TIPO_CARGA[TIPO_CARGA])
&& Rechazos[CARGA]==**[Anterior Carga]**
)
),
CALCULATE([Nº Rechazos],
FILTER(all(Rechazos), Rechazos[TIPO_CONTADOR]==SELECTEDVALUE(Tipo_Contador[TIPO_CONTADOR])
&& Rechazos[TIPO_CARGA]==SELECTEDVALUE(TIPO_CARGA[TIPO_CARGA])
&& Rechazos[CARGA]==**[Anterior Carga]**
&& Rechazos[CODIGO_VENTA]==valor_codigo_venta
)
)
)
)
如您所见,唯一的区别是粗体代码。但是它总是给我0。如果我引入一个硬编码的代码(例如20200917),它将为我提供结果。因此,我怀疑措施“ 前部腕骨肌”,具体来说以粗体显示。但是我找不到答案。
有人可以看到此代码的问题在哪里吗?
谢谢。
答案 0 :(得分:1)
我不知道为什么要先执行ALL(Rechazos),然后再次应用过滤器,但可能可以通过将最后一次加载保存到变量中来修复您的错误:
Nº Rechazos Anterior =
var valor_codigo_venta = SELECTEDVALUE(CODIGO_VENTA[CODIGO_VENTA])
var anterior_carga = [Anterior Carga]
RETURN(
IF(ISBLANK(valor_codigo_venta),
CALCULATE([Nº Rechazos],
FILTER(all(Rechazos), Rechazos[TIPO_CONTADOR]==SELECTEDVALUE(Tipo_Contador[TIPO_CONTADOR])
&& Rechazos[TIPO_CARGA]==SELECTEDVALUE(TIPO_CARGA[TIPO_CARGA])
&& Rechazos[CARGA]== anterior_carga
)
),
CALCULATE([Nº Rechazos],
FILTER(all(Rechazos), Rechazos[TIPO_CONTADOR]==SELECTEDVALUE(Tipo_Contador[TIPO_CONTADOR])
&& Rechazos[TIPO_CARGA]==SELECTEDVALUE(TIPO_CARGA[TIPO_CARGA])
&& Rechazos[CARGA]== anterior_carga
&& Rechazos[CODIGO_VENTA]==valor_codigo_venta
)
)
)
)