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
Anonymous
Not applicable

Sumar filas

Hola, voy comenzando con Powr BI y estoy conociendo las funciones DAX.

 

Me gustaría saber si hay manera de hacer lo siguiente con DAX.

 

Tengo una tabla con los siguientes datos:

EquipoOrigenDestinoFecha SalidaFecha LlegadaDistancia kmsTotal Distancia
T1Planta1Almacen101/03/2021 02:0101/03/2021 10:01150292
T1Almacen1Planta101/03/2021 11:1001/03/2021 19:01142 
T1Planta1Almacen202/03/2021 03:0102/03/2021 12:01210420
T1Almacen2Planta102/03/2021 13:1002/03/2021 22:01210 
T1Planta1Bodega103/03/2021 02:0103/03/2021 02:317299
T1Bodega1Almacen103/03/2021 03:0103/03/2021 10:01150 
T1Almacen1Planta103/03/2021 11:1003/03/2021 19:01142 

 

Cada fila representa un tramo del recorrido y su distancia, necesito poder sumar la distancia de los diferentes tramos y ponerlo en un total, esto en excel lo hago con fórmulas, pero con DAX no encuentro la manera.

 

Gracias por su atención, saludos...

12 REPLIES 12
Syndicate_Admin
Administrator
Administrator

No@Syndicate_Admin,

¡Buen día! ¿Se ha resuelto su problema? si es así, por favor considere Aceptar una respuesta correcta como la solución para ayudar a otros a encontrarlo.
Saludos
Caitlyn Yan
Syndicate_Admin
Administrator
Administrator

Hay @Syndicate_Admin @Alberto_O

No está muy claro, el total se basa actualmente en la fecha de equipo y fecha de salida, puede hacer M o DAX. ¿Qué sucede si desea calcular diferentes condiciones? ¿Y quieres una medida o una columna calculada?

M

let
  Source = Table.FromRows(
    Json.Document(
      Binary.Decompress(
        Binary.FromText(
          "nZCxCoNAEER/JVwtuLsTCbFLvsAinVgcKmmMNv4/4XBhT9fKbnkwj9lp2/DhUIRmivMa0/WafrEf53QSl4RSSPhGUtMBMW2IKwpdoZ4sbco8xDXTAT3VcxfzuD6SQmJ9oH0MsVYU9n1k3ycLQfsYkjOPhd/LMH43Dfw8O4SEHiaxaD4y/FO4MjL8yDgfufsD",
          BinaryEncoding.Base64
        ),
        Compression.Deflate
      )
    ),
    let
      _t = ((type nullable text) meta [Serialized.Text = true])
    in
      type table [
        Team = _t,
        Origin = _t,
        Destination = _t,
        #"Departure Date" = _t,
        #"Arrival Date" = _t,
        #"Distance kms" = _t
      ]
  ),
  #"Changed Type" = Table.TransformColumnTypes(
    Source,
    {
      {"Team", type text},
      {"Origin", type text},
      {"Destination", type text},
      {"Departure Date", type datetime},
      {"Arrival Date", type datetime},
      {"Distance kms", Int64.Type}
    }
  ),
  #"Inserted Date" = Table.AddColumn(
    #"Changed Type",
    "Date",
    each DateTime.Date([Departure Date]),
    type date
  ),
  #"Grouped Rows" = Table.Group(
    #"Inserted Date",
    {"Team", "Date"},
    {{"Total", each List.Sum([Distance kms]), type nullable number}}
  ),
  #"Merged Queries" = Table.NestedJoin(
    #"Grouped Rows",
    {"Team", "Date"},
    #"Inserted Date",
    {"Team", "Date"},
    "Grouped Rows",
    JoinKind.LeftOuter
  ),
  #"Expanded Grouped Rows" = Table.ExpandTableColumn(
    #"Merged Queries",
    "Grouped Rows",
    {"Origin", "Destination", "Departure Date", "Arrival Date", "Distance kms"},
    {"Origin", "Destination", "Departure Date", "Arrival Date", "Distance kms"}
  )
in
  #"Expanded Grouped Rows"

Medida DAX con una columna [Fecha] agregada

Total2 = 
SUMX(FILTER(ALL('Table'),'Table'[Team]=SELECTEDVALUE('Table'[Team])&&'Table'[Date]=SELECTEDVALUE('Table'[Date])),'Table'[Distance kms])

Vera_33_1-1614827798020.png

Anonymous
Not applicable

Hola, creo que explique muy poco sobre mi problema con esta tabla.

 

La tabla representa los viajes que hace una flotilla de unidades, el problema con la estructura de la tabla es que si quiero mostrar la distancia total recorrida a un destino, solo muestra la distancia del origen a ese destino, y la otra parte del recorrido la pone en una fila aparte.

 

En Excel, esto lo podía resolver usando formulas para acumular la distancia de un recorrido Origen-Destino-Origen, y mostrar la distancia total (ida y regreso) al destino seleccionado.

 

La solución de la fecha es buena, solo que hay viajes que inician un día y llegan al destino dos o tres días después del inicio del viaje, igual para el regreso.

 

Otro problema es que como todos los destinos regresan a Planta1, se mezclan en una sola fila.

 

Necesito sumar la distancia que recorrió T1 desde que sale de Origen-Planta 1 hasta que llega a Destino-Planta1.

 

Sobre si debe ser una medida o una columna, no estoy seguro, ya que este valor debo almacenarlo para cada viaje y poder hacer cálculos sobre él en el tiempo.

 

Gracias por el apoyo.

Hola, el total se basa en equipo y origen y destino, la fecha puede ser diferente entre las secciones del viaje. La distancia total es la suma de Plant1 a todos los destinos se visitan y regresan a Plant1. Necesito sumar la distancia de las secciones de trought Origin-Plant1 a Destination-Plant1.

Muchas gracias por ayuda.

Hay @Syndicate_Admin @Alberto_O

Ahora tiene más sentido. Así que necesito identificar el viaje primero, y luego resumir. ¿Tienes más de 1 equipo? Hay otras maneras. Esta es una columna calculada, teniendo en cuenta más de 1 equipo

Vera_33_0-1614910707159.png

Column = 
VAR CurTeam = 'Table'[Team]
VAR CurDepTime = 'Table'[Departure Date]
VAR CurArrTime = 'Table'[Arrival Date]
VAR StarTime = MAXX(FILTER(ALL('Table'),'Table'[Origin]="Planta1"&&'Table'[Departure Date]<=CurDepTime),'Table'[Departure Date])
VAR EndTime = MINX(FILTER(ALL('Table'),'Table'[Destination]="Planta1"&&'Table'[Arrival Date]>=CurDepTime),'Table'[Arrival Date])
RETURN
SUMX(FILTER(ALL('Table'),'Table'[Departure Date]>=StarTime&&'Table'[Arrival Date]<=EndTime&&'Table'[Team]=CurTeam),'Table'[Distance kms])

Prueba esto en mi proyecto y funciona muy bien, así que me gustaría saber si la función Fecha puede funcionar con la columna Fecha/Hora, porque algunos viajes terminan e inician la misma fecha, y suma secciones de otros viajes. Creo que ese es el último paso para la solución.

Muchas gracias.

No hay @Alberto_O

No sigo tu pregunta, ¿resume números equivocados para algunos viajes? ¿Puede proporcionar algunos datos de ejemplo de esos números incorrectos?

Anonymous
Not applicable

Hola, por error use las fechas en formato de Fecha, ahora que revisé de nuevo tu formula si la tienes como formato de Fecha/Tiempo.

 

Si aplico de forma correcta las fórmulas en mi archivo, la columna no termina de calcularse, después de 6 horas seguía calculando y tuve que finalizar el proceso desde el administrador de tareas.

 

Mi archivo tiene 600K filas, creo que no es muy grande, pero no se de que manera saber el tiempo que tardará en hacer los cálculos.

 

Gracias por el apoyo.

No hay @Syndicate_Admin

Agregue una columna personalizada en M para determinar primero el mismo viaje

let
  Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("rZHBCsIwEER/RXIudHdWEXvTL+jBW+khaPFS68X/R0IDmzQpSMhtGZjh7cwwmDubxvSzXb7WXdf5bR/T4k7ilqQFgQ+EjjYS0yrxiczY+JzArZGhiTumjXTxOUdoTsIDZ4LyiOdRiT0iOOVBzBOYxPOohFyOmm+f5/RaYyStJ5LESWcNUWtYsqRPSUnJkpYs+yUjV3LB6Kg0epanYHSYOqPH5sLRUWn0/ZL/H338AQ==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Team = _t, Origin = _t, Destination = _t, #"Departure Date" = _t, #"Arrival Date" = _t, #"Distance kms" = _t]),
    #"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1, Int64.Type),
    #"Grouped Rows" = Table.Group(#"Added Index", {"Team"}, {{"allrows", each _, type table}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Table.AddColumn([allrows],"Trip", (IT)=> 
if IT[Origin] = "Planta1" then IT[Index]
else List.Max( Table.SelectRows([allrows],  each [Index] <IT[Index] and [Origin]="Planta1")[Index]))),
    #"Removed Other Columns" = Table.SelectColumns(#"Added Custom",{"Custom"}),
    #"Expanded Custom" = Table.ExpandTableColumn(#"Removed Other Columns", "Custom", {"Team", "Origin", "Destination", "Departure Date", "Arrival Date", "Distance kms", "Trip"}, {"Team", "Origin", "Destination", "Departure Date", "Arrival Date", "Distance kms", "Trip"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Expanded Custom",{{"Distance kms", Int64.Type}})
in
    #"Changed Type"

a continuación, una columna DAX o una medida en un objeto visual a su elección, aquí hay una columna DAX

Column = 
VAR CurTrip = [Trip]
RETURN
SUMX(FILTER(Query1,[Trip]=CurTrip),[Distance kms])
Anonymous
Not applicable

Hola, traté de adecuar la fórmula a mi proyecto, cambiando el "Source" por mi tabla de datos original, cambiando esto:

 

 

Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("rZHBCsIwEER/RXIudHdWEXvTL+jBW+khaPFS68X/R0IDmzQpSMhtGZjh7cwwmDubxvSzXb7WXdf5bR/T4k7ilqQFgQ+EjjYS0yrxiczY+JzArZGhiTumjXTxOUdoTsIDZ4LyiOdRiT0iOOVBzBOYxPOohFyOmm+f5/RaYyStJ5LESWcNUWtYsqRPSUnJkpYs+yUjV3LB6Kg0epanYHSYOqPH5sLRUWn0/ZL/H338AQ==", BinaryEncoding.Base64), Compression.Deflate))

 

 

Por: #"TableName" que hace referencia a mis datos.

 

Source = Table.FromRows(#"TableName" ...

 

Pero algo debo hacer mal, ya que no me funciona.

 

Muchas gracias por el apoyo.

No hay @Syndicate_Admin

¿Tiene un problema para copiar el código y pegar en Advanced Editor? Para que pueda ver la consulta. Si necesita cambiar el origen a sus propios datos, vaya al Editor avanzado y copie el origen = ...., toda la línea y reemplace la de mi código. También debe ocuparse del criterio de ordenación antes de agregar Index, asumo que los datos se ordenan por fecha de salida (fecha y hora). Avísame si tienes alguna pregunta.

Sí, tengo unas 43 T diferentes.

Muy muy thaks para su ayuda.

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