Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
dollarvora
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
MFelix
Super User
Super User

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
MFelix
Super User
Super User

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



Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors