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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Compra recencia con DirectQuery

Hola a todos,

Estoy tratando de calcular la actualidad de compra por meses utilizando datos de Google BigQuery a través de DirectQuery.

Para ello, he creado esta medida:

actualidad =
DÓNDE fechaAy = HOY()
DÓNDE díasDiff =
DATEDIFF( bc_customer[date_of_last_purchase], fechaAy, DÍA )
DÓNDE nada =
SI (
bc_customer[date_of_last_purchase],
INTERRUPTOR (
VERDADERO (),
díasDiff <= 30, "R5",
díasDiff <= 60, "R4",
díasDiff <= 120, "R3",
díasDiff <= 180, "R2",
díasDiff <= 360, "R1",
"R0"
),
"R0"
)
DEVOLUCIÓN
nada

Dónde
date_of_last_purchase = MAX(bc_order[order_created_date_time])

Puedo visualizar esto en una tabla de la siguiente manera:

rgjiang_0-1635509201409.png

Pero no puedo ver esto en un gráfico circular (ver más abajo) de modo que el pastel se divida en los diferentes contenedores de recencia, que es lo que quiero. En el gráfico circular, no puedo arrastrar la medida de actualidad a los Valores.

rgjiang_1-1635509428501.png

¿Tal vez necesitaría reescribir esta medida como una nueva columna? ¿Cómo lo haría? ¿O es otra cosa?

8 REPLIES 8
Syndicate_Admin
Administrator
Administrator

Hay @rgjiang ,

¿Podría compartirme con su archivo pbix después de eliminar datos confidenciales?

Saludos
Eyelyn Qin

Hola Evelyn,

gracias por ofrecer su ayuda!

No estoy seguro de cómo lo haría porque no tengo permiso para importar los datos, y la importación de los datos también frustraría el propósito de usar DirectQuery de todos modos. Por lo tanto, el comportamiento sería diferente. DirectQuery, por otro lado, requiere un acceso mediante una clave privada. ¿O quiere decir que debo crear un duplicado estático y modificado?

Syndicate_Admin
Administrator
Administrator

Para usarlo como una categoría en el visual, debe ser una columna calculada.

Dado que es una columna calculada, puede confiar en el contexto de la fila en lugar de tener que tomar un MAX.

recency =
VAR daysDiff = DATEDIFF ( bc_order[order_created_date_time], TODAY (), DAY )
VAR res =
    SWITCH (
        TRUE (),
        daysDiff <= 30, "R5",
        daysDiff <= 60, "R4",
        daysDiff <= 120, "R3",
        daysDiff <= 180, "R2",
        daysDiff <= 360, "R1",
        "R0"
    )
RETURN
    res

Hay @AlexisOlson,

muchas gracias por su respuesta. Desafortunadamente, dice

OLE DB or ODBC error: [Expression.Error] We couldn't fold the expression to the data source. Please try a simpler expression.

¿Debería más bien dividir esta expresión o hay una manera más simple? Lo siento si estas preguntas son tontas, todavía estoy muy al comienzo de aprender Power BI.

No es una pregunta tonta, diferentes fuentes de datos tienen diferentes limitaciones de DirectQuery. Lo probé con un DirectQuery a un servidor Sql Server y funcionó, pero BigQuery es aparentemente diferente.

Pruebe cada uno de estos para ver cuál es el factor de ruptura:

TodayFunction = TODAY ()

DateDifference = DATEDIFF ( DATE ( 2021, 1, 1 ), DATE ( 2021, 10, 29 ), DAY )

SwitchFunction =
    SWITCH (
        TRUE (),
        bc_order[order_created_date_time] < DATE ( 2020, 1, 1 ), "Prev Years",
        bc_order[order_created_date_time] < DATE ( 2021, 1, 1 ), "2020",
        "2021"
    )

¡Es bueno saberlo!

Los probé todos y agregué SwitchFunction como una nueva columna. Resulta que esto causa un error tis

OLE DB or ODBC error: [DataSource.Error] ODBC: ERROR [42000] [Microsoft][BigQuery](70) Invalid query: No matching signature for operator < for argument types: DATETIME, TIMESTAMP. Supported signature: ANY < ANY at [9:55].

Si entiendo este error correctamente, esto indica que el tipo de datos de bc_order[order_created_date_time] en BigQuery debe tener el tipo TIMESTAMP. ¿Puedo evitar este error sin modificar los datos en BigQuery porque no tengo permisos de escritura?

No estoy muy seguro, pero parece que el problema podría ser comparar la fecha con la fecha y la hora.

¿Obtiene el mismo error si usa TODAY() o DATEVALUE ( "1/1/2020" ) en lugar de DATE ( 2020, 1, 1 ) en el SWITCH?

Sí, desafortunadamente.

Helpful resources

Announcements
PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.