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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Syndicate_Admin
Administrator
Administrator

Las fechas de una sola columna de fecha no producen el resultado esperado

Hola

Estoy buscando su experiencia para ayudarme a mejorar dos cálculos de DAX que estoy usando actualmente para calcular las fechas de recepción y envío (manejo) para una tabla de tickets. Los datos que estoy tratando están relacionados con una lista de tickets que son recibidos y luego tratados por técnicos en diferentes fechas, desafortunadamente, solo se me proporciona una columna de fecha que agrega todas las acciones realizadas en un ticket específico (que es DateTime), y un ticket puede aparecer repetidamente pero con diferentes fechas de recepción y envío (lo que debe tenerse en cuenta, por supuesto).

Aquí hay una instantánea de la tabla de datos sin procesar:

Siéntase libre de descargar estas tablas de datos de prueba desde aquí: "https://smallpdf.com/file#s=c745e973-29a0-4dbd-85ab-2472d7379858"


A continuación se muestran los cálculos de DAX que estoy usando para producir los resultados (que ahora son inexactos)

ReceiverDate = 
CALCULATE(
MIN(WEEKLY_IDs[DateTime]),
FILTER(
ALL('WEEKLY_IDs'),
'WEEKLY_IDs'[SenderID] = EARLIER('WEEKLY_IDs'[ReceiverID]) &&
'WEEKLY_IDs'[ReceiverID] = EARLIER('WEEKLY_IDs'[SenderID]) &&
'WEEKLY_IDs'[Ticket_ID] = EARLIER('WEEKLY_IDs'[Ticket_ID])
)
)

SenderDate =
CALCULATE(
MAX([DateTime]),
FILTER(
ALL('WEEKLY_IDs'),
'WEEKLY_IDs'[SenderID] = EARLIER('WEEKLY_IDs'[SenderID]) &&
'WEEKLY_IDs'[ReceiverID] = EARLIER('WEEKLY_IDs'[ReceiverID]) &&
'WEEKLY_IDs'[Ticket_ID] = EARLIER('WEEKLY_IDs'[Ticket_ID])
)
)

Jack_Reacher_1-1685573193256.png

Estos son los resultados finales que estoy tratando de lograr con estos dos cálculos de DAX:

Jack_Reacher_2-1685573193252.png

¿Alguna idea de cómo afinar estos calcs, por favor?

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Gracias @v-yueyunzh-msft , logré fusionar la consulta con el resto del conjunto de datos, y las fechas se ven mucho mejor ahora

Syndicate_Admin
Administrator
Administrator

@v-yueyunzh-msft , bienvenido de vuelta de sus vacaciones, espero que haya tenido días 😊 de descanso, perdón por la respuesta tardía ya que estaba inundado de trabajo, tengo que admitir que la lógica utilizada en las columnas calculadas con las que vine es limitada ya que soy bastante nuevo en el software Power BI. Aparte de eso, los cálculos que proporcionó aquí parecen ser muy lógicos y los resultados que estoy viendo parecen mucho más precisos.

Probaré estos cálculos y volveré a usted.
¡Muchas gracias por su tiempo y ayuda en este tema!

Syndicate_Admin
Administrator
Administrator

Hi , @Jack_Reacher

¡Gracias por su respuesta qucik y sus datos de muestra!

De acuerdo con su descripción y sus datos de resultados esperados, no estoy seguro de entender completamente su lógica de cálculo. Según la comparación, ordeno directamente sus fechas y obtengo la hora de inicio y finalización a través del orden cronológico, pero no he encontrado las reglas de cálculo para su lógica de cálculo de otras columnas. Estoy en Para implementar en Power Query, puede probar los siguientes métodos para ver si son aplicables a su situación, puede poner este código M en su consulta en blanco , y la tabla de datos de ejemplo en mi lado se llama 'Tabla':

let
    Source = Table.Group(Table,"DOSSIER_Nb",{"test",(x)=>Table.Distinct(Table.Sort(x,"DateTimez") )      }),
    #"Added Custom" = Table.AddColumn(Source, "Custom", (x)=>if Number.Mod(Table.RowCount(x[test]),2) =0 then {1..Table.RowCount(x[test])/2} else {1..(Table.RowCount(x[test])+1)/2}    ),
    #"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom"),
    #"Added Custom1" = Table.AddColumn(#"Expanded Custom", "ReceiverDate", (x)=>    
if Number.Mod(Table.RowCount(x[test]),2)<>0 and (Table.RowCount(x[test])+1)/2 =x[Custom] then  x[test]{Table.RowCount(x[test])-2}[DateTimez] 
else x[test]{2*(x[Custom]-1)}[DateTimez]  
   ),
    #"Added Custom2" = Table.AddColumn(#"Added Custom1", "SenderDate",  (x)=>    
if Number.Mod(Table.RowCount(x[test]),2)<>0 and (Table.RowCount(x[test])+1)/2 =x[Custom] then  x[test]{Table.RowCount(x[test])-1}[DateTimez] 
else x[test]{2*(x[Custom]-1)+1}[DateTimez]),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom2",{"test", "Custom"})
in
    #"Removed Columns"

Puede intentar reemplazar el nombre de la tabla en su lado:

vyueyunzhmsft_0-1686102328567.png

El resultado es el siguiente:

vyueyunzhmsft_1-1686102344586.png

Gracias por su tiempo y uso compartido, y gracias por su apoyo y comprensión de PowerBI.

Saludos

Dijo Zhang

Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Syndicate_Admin
Administrator
Administrator

Hola @v-yueyunzh-msft , para la función DAX anterior que utilicé aquí, solo se aplican a "Columnas nuevas" y no a medidas, así que sí, ambas son medidas de columna ya que no pude encontrar una buena medida de DAX para implementar.
Lo siento por el enlace roto, traté de subir documentos junto con mi publicación en la comunidad, pero no da la opción de hacerlo. Este enlace debería funcionar bien ahora: https://docs.google.com/spreadsheets/d/19DnS6zFL-XgLvC9GNft-zLcqHm_Mif1g/edit?usp=sharing&ouid=10719...
Contiene dos pestañas, una para los datos sin procesar de un conjunto de datos mucho más grande, y la otra pestaña incluye la tabla con las dos columnas que quiero producir gracias a las columnas calculadas que publiqué, estas columnas se llaman ReceiverDate y SenderDate.
La lógica que utilicé en las columnas calculadas (y podría haber perdido algo) es que para cada receptor e ID de remitente, quiero generar el DateTime alineado con él, luego crearé otra columna calculada para producir la duración que tardó cada ticket en ser tratado.
Espero su respuesta y gracias de antemano.

Syndicate_Admin
Administrator
Administrator

@Jack_Reacher

De acuerdo con el código dax, está utilizando la función EARLY, que significa la fila actual, y utiliza 'WEEKLY_IDs'[SenderID] = EARLY('WEEKLY_IDs'[ReceiverID]), lo que significa que la fila actual [SenderID]=[ ReceiverID] es True.

Si está utilizando medida, generalmente no usaremos EARLY() como la lógica de juicio, que generalmente se usa en columnas calculadas. ¿Desea utilizar columnas o medidas calculadas?

Mientras tanto, intenté iniciar sesión con la cuenta de gmail, pero aún no tengo acceso para descargar este enlace de archivo que compartiste. Si es conveniente, ¿le gustaría verificar amablemente la situación de acceso de este enlace y abrir el acceso público para nuestra descarga?

vyueyunzhmsft_2-1685677310910.png

Y según tu última captura de pantalla, todavía no entiendo muy bien cómo obtuviste el resultado final. Para su pregunta, ¿puede proporcionarme algunos datos de prueba parciales (incluido el caso de los valores repetidos que mencionó) y proporcionarme el resultado final correcto que desea generar En forma de tabla, hará que el problema sea más claro y comprensible.
Gracias por compartir su DAX, solo DAX sin datos de prueba, es difícil proporcionarle el soporte correspondiente directamente.

Por último, lo siento mucho. Tengo 4 días de vacaciones en el futuro. Espero su respuesta. Me pondré en contacto contigo tan pronto como regrese ~

Gracias por su tiempo y uso compartido, y gracias por su apoyo y comprensión de PowerBI.

Saludos

Dijo Zhang

Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

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

April Fabric Community Update

Fabric Community Update - April 2024

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

Top Solution Authors