cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Helper I
Helper I

El ID de búsqueda no está presente en una fecha representada por un yyyyweek_number

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:


IdOrder_YYYY_WEEK
1202001
2202003
3202004
5202006
2202008
3202010
6202012
8202009
1202005
10202015
11202018
13202038
15202039
12202040

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

dollarvora_1-1601356217520.png

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
1 ACCEPTED SOLUTION
Super User III
Super User III

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:

  • Agregue una columna personalizada con la fecha de inicio de la semana:
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


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog:

Power BI em Português





View solution in original post

1 REPLY 1
Super User III
Super User III

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:

  • Agregue una columna personalizada con la fecha de inicio de la semana:
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


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog:

Power BI em Português





View solution in original post

Helpful resources

Announcements
secondImage

Happy New Year from Power BI

This is a must watch for a message from Power BI!

December Update

Check it Out!

Click here to read more about the December 2020 Updates!

Community Blog

Check it Out!

Click here to read the latest blog and learn more about contributing to the Power BI blog!

Get Ready for Power BI Dev Camp

Get Ready for Power BI Dev Camp

Mark your calendars and join us for our next Power BI Dev Camp!.

Top Solution Authors