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

Buscando encontrar moneda de tiempo por minuto

Hola a todos -

Tengo la fecha y hora de la parada y las horas de inicio de las subidas que se realizan en un hospital. Estoy tratando de averiguar cuántas cirugías están sucediendo en el hospital por minuto. Tiene que ser por minuto. ¿Alguien tiene alguna experiencia trabajando con un rango de fechas y horas y encontrando concurrencia por minuto? Esperaba poder expandir la tabla por el rango de fecha y hora para crear una fila por cada minuto.

Todas y cada una de las ideas son apreciadas!!! Gracias por la ayuda - Adam

1 ACCEPTED SOLUTION

Echa un vistazo a esta demo

En pasos:

1) Comenzó con una tabla básica:

bcdobbs_0-1642005620223.png

2) En power query se rompió la fecha y las horas:

bcdobbs_1-1642005666254.png

3) Cambió las fechas y horas originales a decimales.

4) Se crearon columnas personalizadas que multiplican los decimales de inicio y fin por 24 * 60. (1 día es igual a 1, por lo que devuelve un número entero de minutos desde 30 de diciembre de 1899. )

bcdobbs_2-1642005810124.png

M completo:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUTI00jcw1DcyMDJSMLC0MjDAEDI2UIrViVYyAkkYIyQsQBIoQoYGIO0gtcZoamHmIqk1BKuNBQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [SurgeryId = _t, #"DateTime Start" = _t, #"DateTime End" = _t]),
    ChangedType = Table.TransformColumnTypes(Source,{{"SurgeryId", Int64.Type}, {"DateTime Start", type datetime}, {"DateTime End", type datetime}}),
    AddDateStart = Table.AddColumn(ChangedType, "Date Start", each DateTime.Date([DateTime Start])),
    AddDateEnd = Table.AddColumn(AddDateStart, "Date End", each DateTime.Date([DateTime End])),
    AddTimeStart = Table.AddColumn(AddDateEnd, "Time Start", each DateTime.Time([DateTime Start])),
    AddTimeEnd = Table.AddColumn(AddTimeStart, "Time End", each DateTime.Time([DateTime End])),
    ChangedType2 = Table.TransformColumnTypes(AddTimeEnd,{{"DateTime Start", type number}, {"DateTime End", type number}}),
    AddMinuteStartStamp = Table.AddColumn(ChangedType2, "MinuteStartStamp", each [DateTime Start]*24*60),
    AddMinuteEndStamp = Table.AddColumn(AddMinuteStartStamp, "MinuteEndStamp", each [DateTime End] * 24 * 60),
    ChangedType3 = Table.TransformColumnTypes(AddMinuteEndStamp,{{"MinuteStartStamp", Int64.Type}, {"MinuteEndStamp", Int64.Type}}),
    RemovedOtherColumns = Table.SelectColumns(ChangedType3,{"SurgeryId", "Date Start", "Date End", "Time Start", "Time End", "MinuteStartStamp", "MinuteEndStamp"})
in
    RemovedOtherColumns

6) Utilice el siguiente DAX para crear una tabla con grano minúsculo:

ExpandedTable = 
    GENERATE (
        OriginalTable,
        VAR CurrentStart = OriginalTable[MinuteStartStamp]
        VAR CurrentEnd = OriginalTable[MinuteEndStamp]
        RETURN
            GENERATESERIES( CurrentStart, CurrentEnd, 1 )
    )

7) Cambie el nombre de la columna VALOR a "Sello de minutos".

Me gustaría poder hacer todo eso en PowerQuery, pero no puedo hacer que funcione en este momento. Se actualizará si lo ordeno.

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Hola @bcdobbs ,

Muchas gracias por su ayuda y respuesta detallada. Solo lo estoy viendo ahora y voy a revisar la información que proporcionó y lo intentaré. Súper emocionado de tratar de resolver este problema, ya que será de gran ayuda para nuestro hospital.

Gracias

Adán

Syndicate_Admin
Administrator
Administrator

No se hace en el grano minuto, pero a menudo se expande el inicio / final del día a una mesa en el grano del día que se hace utilizando:

TableExpanded = 
    GENERATE (
        OriginalTable,
        DATESBETWEEN('Calendar'[Date], OriginalTable[Start Date], OriginalTable[End Date] )
    )


Creo que si creas un horario en el grano de minutos, podrás expandirlo.

Si puede proporcionar algunos datos de demostración, podríamos intentar resolverlo.

En realidad, no hay una función MINUTESBETWEEN, por lo que es necesario pensar un poco más. Pensar generaeries podría ayudar, pero necesita tener una obra de teatro.

Echa un vistazo a esta demo

En pasos:

1) Comenzó con una tabla básica:

bcdobbs_0-1642005620223.png

2) En power query se rompió la fecha y las horas:

bcdobbs_1-1642005666254.png

3) Cambió las fechas y horas originales a decimales.

4) Se crearon columnas personalizadas que multiplican los decimales de inicio y fin por 24 * 60. (1 día es igual a 1, por lo que devuelve un número entero de minutos desde 30 de diciembre de 1899. )

bcdobbs_2-1642005810124.png

M completo:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUTI00jcw1DcyMDJSMLC0MjDAEDI2UIrViVYyAkkYIyQsQBIoQoYGIO0gtcZoamHmIqk1BKuNBQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [SurgeryId = _t, #"DateTime Start" = _t, #"DateTime End" = _t]),
    ChangedType = Table.TransformColumnTypes(Source,{{"SurgeryId", Int64.Type}, {"DateTime Start", type datetime}, {"DateTime End", type datetime}}),
    AddDateStart = Table.AddColumn(ChangedType, "Date Start", each DateTime.Date([DateTime Start])),
    AddDateEnd = Table.AddColumn(AddDateStart, "Date End", each DateTime.Date([DateTime End])),
    AddTimeStart = Table.AddColumn(AddDateEnd, "Time Start", each DateTime.Time([DateTime Start])),
    AddTimeEnd = Table.AddColumn(AddTimeStart, "Time End", each DateTime.Time([DateTime End])),
    ChangedType2 = Table.TransformColumnTypes(AddTimeEnd,{{"DateTime Start", type number}, {"DateTime End", type number}}),
    AddMinuteStartStamp = Table.AddColumn(ChangedType2, "MinuteStartStamp", each [DateTime Start]*24*60),
    AddMinuteEndStamp = Table.AddColumn(AddMinuteStartStamp, "MinuteEndStamp", each [DateTime End] * 24 * 60),
    ChangedType3 = Table.TransformColumnTypes(AddMinuteEndStamp,{{"MinuteStartStamp", Int64.Type}, {"MinuteEndStamp", Int64.Type}}),
    RemovedOtherColumns = Table.SelectColumns(ChangedType3,{"SurgeryId", "Date Start", "Date End", "Time Start", "Time End", "MinuteStartStamp", "MinuteEndStamp"})
in
    RemovedOtherColumns

6) Utilice el siguiente DAX para crear una tabla con grano minúsculo:

ExpandedTable = 
    GENERATE (
        OriginalTable,
        VAR CurrentStart = OriginalTable[MinuteStartStamp]
        VAR CurrentEnd = OriginalTable[MinuteEndStamp]
        RETURN
            GENERATESERIES( CurrentStart, CurrentEnd, 1 )
    )

7) Cambie el nombre de la columna VALOR a "Sello de minutos".

Me gustaría poder hacer todo eso en PowerQuery, pero no puedo hacer que funcione en este momento. Se actualizará si lo ordeno.

Versión enteramente en PowerQuery que creo que es más ordenada.

Solo necesitaba agregar una columna adicional en power query con lo siguiente:

List.Numbers([MinuteStartStamp], [MinuteEndStamp]-[MinuteStartStamp] + 1, 1)

Esa columna puede expandirse a nuevas filas.

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.