Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
Tengo 2 conjuntos de datos, uno que reabasteces una lista de todos los clientes y otro con sus fechas de pedido La fecha de pedido están en un formato yyyyweek_number, por ejemplo, como hoy (2020-09-29) es la semana 40, la fecha de pedido se representaría como 202040
Quiero obtener una lista de los distribuidores que no han hecho pedidos en rangos de 4 días a saber, 30 días o menos 60 días o menos 90 días o menos y 90+ días
Para ilustrar digamos que el conjunto de datos del cliente es como en:
Id |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
y la tabla Pedido es la siguiente:
Id | Order_YYYY_WEEK |
1 | 202001 |
2 | 202003 |
3 | 202004 |
5 | 202006 |
2 | 202008 |
3 | 202010 |
6 | 202012 |
8 | 202009 |
1 | 202005 |
10 | 202015 |
11 | 202018 |
13 | 202038 |
15 | 202039 |
12 | 202040 |
El formato de segmentación que tengo se ve así con 4 botones:
1. 30 días o menos
2. 60 días o menos
3. 90 días o menos
4. 90+ días
Ahora digamos por ejemplo que el botón de 30 días o menos está seleccionado, la tabla resultante debe representar una tabla como debajo, con todos los ID de la tabla Customer que no están presentes en la tabla ORDER donde ORDER_YYYY_WEEK es de 30 días a partir de la semana de hoy
Id |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
14 |
Solved! Go to Solution.
Hola @dollarvora ,
Intente agregar la medida de filtro personalizada:
Selection =
VAR CurrentWeek =
CONVERT ( YEAR ( TODAY () ) & WEEKNUM ( TODAY () ); INTEGER )
VAR Time_Period =
SWITCH ( SELECTEDVALUE ( Date_Range[ID] ); 1; 4; 2; 8; 3; 12; 99999 )
VAR Temp_Table =
FILTER (
SUMMARIZE ( 'Order'; 'Order'[ID]; 'Order'[Order_YYYY_WEEK] );
'Order'[Order_YYYY_WEEK] <= CurrentWeek
&& 'Order'[Order_YYYY_WEEK] >= CurrentWeek - Time_Period
)
RETURN
IF (
SELECTEDVALUE ( Customer[ID] ) <> MAXX ( Temp_Table; 'Order'[ID] );
1;
BLANK ()
)
Tenga en cuenta que sus datos están muy reducidos, así que tenga en cuenta que esto no está preparado para los cambios de año, y solo mirando el número de semana.
Si quieres tenerlo con cambios de año haría lo siguiente:
StartDate =
var _year = LEFT('Order'[Order_YYYY_WEEK];4)
var _week = RIGHT('Order'[Order_YYYY_WEEK];2)
return
DATE(_year ; 1 ; 1) + (_week - 1 ) * 7
Ahora vuelva a hacer la medida para:
Selection_Based_on_Date =
var today_week = DATE(YEAR(TODAY()) ; 1 ; 1) + (WEEKNUM(TODAY()) - 1 ) * 7
VAR Time_Period =
SWITCH ( SELECTEDVALUE ( Date_Range[ID] ); 1; 30; 2; 60; 3; 90; 99999 )
VAR Temp_Table =
FILTER (
SUMMARIZE ( 'Order'; 'Order'[ID]; 'Order'[StartDate] );
'Order'[StartDate] <= today_week
&& 'Order'[StartDate] >= today_week - Time_Period
)
RETURN
IF (
SELECTEDVALUE ( Customer[ID] ) <> MAXX ( Temp_Table; 'Order'[ID] );
1;
BLANK ()
)
Compruebe el archivo PBIX con ambas opciones.
Regards
Miguel Félix
Proud to be a Super User!
Check out my blog: Power BI em PortuguêsHola @dollarvora ,
Intente agregar la medida de filtro personalizada:
Selection =
VAR CurrentWeek =
CONVERT ( YEAR ( TODAY () ) & WEEKNUM ( TODAY () ); INTEGER )
VAR Time_Period =
SWITCH ( SELECTEDVALUE ( Date_Range[ID] ); 1; 4; 2; 8; 3; 12; 99999 )
VAR Temp_Table =
FILTER (
SUMMARIZE ( 'Order'; 'Order'[ID]; 'Order'[Order_YYYY_WEEK] );
'Order'[Order_YYYY_WEEK] <= CurrentWeek
&& 'Order'[Order_YYYY_WEEK] >= CurrentWeek - Time_Period
)
RETURN
IF (
SELECTEDVALUE ( Customer[ID] ) <> MAXX ( Temp_Table; 'Order'[ID] );
1;
BLANK ()
)
Tenga en cuenta que sus datos están muy reducidos, así que tenga en cuenta que esto no está preparado para los cambios de año, y solo mirando el número de semana.
Si quieres tenerlo con cambios de año haría lo siguiente:
StartDate =
var _year = LEFT('Order'[Order_YYYY_WEEK];4)
var _week = RIGHT('Order'[Order_YYYY_WEEK];2)
return
DATE(_year ; 1 ; 1) + (_week - 1 ) * 7
Ahora vuelva a hacer la medida para:
Selection_Based_on_Date =
var today_week = DATE(YEAR(TODAY()) ; 1 ; 1) + (WEEKNUM(TODAY()) - 1 ) * 7
VAR Time_Period =
SWITCH ( SELECTEDVALUE ( Date_Range[ID] ); 1; 30; 2; 60; 3; 90; 99999 )
VAR Temp_Table =
FILTER (
SUMMARIZE ( 'Order'; 'Order'[ID]; 'Order'[StartDate] );
'Order'[StartDate] <= today_week
&& 'Order'[StartDate] >= today_week - Time_Period
)
RETURN
IF (
SELECTEDVALUE ( Customer[ID] ) <> MAXX ( Temp_Table; 'Order'[ID] );
1;
BLANK ()
)
Compruebe el archivo PBIX con ambas opciones.
Regards
Miguel Félix
Proud to be a Super User!
Check out my blog: Power BI em Português