cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
Frequent Visitor

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

Accepted Solutions
Highlighted
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
Highlighted
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
Community Conference

Power Platform Community Conference

Check out the on demand sessions that are available now!

Community Conference

Microsoft Power Platform Communities

Check out the Winners!

secondImage

Create an end-to-end data and analytics solution

Learn how Power BI works with the latest Azure data and analytics innovations at the digital event with Microsoft CEO Satya Nadella.

Top Solution Authors
Top Kudoed Authors