Forum Discussion
Calcular tabla
Hola, chicos.
Estoy tratando de transformar la siguiente tabla:
| Boleto | Abierto | Cerca | Edad |
| Abc | 01/jan | 10/jan | 10 |
| Def | 01/jan | Feb 01 | 32 |
| Ghi | 01/jan | 10 de febrero | 41 |
| Jkl | 01/jan | 10/mar | 70 |
en esto:
| Boleto | Período | Días a mes |
| Abc | 01/jan | 10 |
| Def | 01/jan | 31 |
| Ghi | 01/jan | 31 |
| Jkl | 01/jan | 31 |
| Def | Feb 01 | 1 |
| Ghi | Feb 01 | 10 |
| Jkl | Feb 01 | 29 |
| Jkl | 01/mar | 10 |
La pregunta que necesito responder es: ¿Cuánto tiempo ha estado abierto un boleto cada mes?
Tks chicos!!
Hola @Williamspsouza
puede hacerlo con Power Query de la siguiente manera:
// Table let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WSkxKVtJRMjDUByIjAyMDIMfQAIWjFKsTrZSSmoauDMQxgnGMjcDK0jMysZkGV2ZiCFaWlZ2DTZkxjGMOtDQWAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Ticket = _t, Open = _t, Close = _t, Age = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Ticket", type text}, {"Open", type date}, {"Close", type date}, {"Age", Int64.Type}}), #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each {Number.From([Open])..Number.From([Close])}), #"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom"), #"Changed Type1" = Table.TransformColumnTypes(#"Expanded Custom",{{"Custom", type date}}), #"Inserted Month" = Table.AddColumn(#"Changed Type1", "Month", each Date.Month([Custom]), Int64.Type), #"Added Custom1" = Table.AddColumn(#"Inserted Month", "Day", each 1), #"Changed Type2" = Table.TransformColumnTypes(#"Added Custom1",{{"Day", Int64.Type}}), #"Grouped Rows" = Table.Group(#"Changed Type2", {"Ticket", "Month"}, {{"Sum", each List.Sum([Day]), type nullable number}}), #"Added Custom2" = Table.AddColumn(#"Grouped Rows", "Period", each #date(2020,[Month],1)), #"Removed Columns" = Table.RemoveColumns(#"Added Custom2",{"Month"}), #"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"Ticket", "Period", "Sum"}), #"Changed Type3" = Table.TransformColumnTypes(#"Reordered Columns",{{"Period", type date}}) in #"Changed Type3"No Molesta Con el Fecha Formato. eso Es En el Forma De Mi Región.Con saludos amables desde la ciudad donde la leyenda del 'Pied Piper de Hamelin' está en casa
FrankAT (Orgulloso de ser un Datanaut)- Anonymous6 years ago
Hola @Williamspsouza ,
1.My datos de ejemplo es este.
Boleto
Edad
Abierto
Cerca
Abc
10
01/Jan
10/Ene
Def
32
01/Jan
01/Feb
Ghi
41
01/Jan
10/Febrero
Jkl
70
01/Jan
10/Mar
2.Crear columnas calculadas para obtener la fecha de apertura y la fecha de cierre.
OpenDate = VAR month = SWITCH ( RIGHT ( 'Table'[Open], 3 ), "Jul", 7, "Aug", 8, "Sep", 9, "Oct", 10, "Nov", 11, "Dec", 12, "Jan", 1, "Feb", 2, "Mar", 3, "Apr", 4, "May", 5, "Jun", 6 ) RETURN DATE ( 2020, month, LEFT ( 'Table'[Open], 2 ) )CloseDate = VAR month = SWITCH ( RIGHT ( 'Table'[Close], 3 ), "Jul", 7, "Aug", 8, "Sep", 9, "Oct", 10, "Nov", 11, "Dec", 12, "Jan", 1, "Feb", 2, "Mar", 3, "Apr", 4, "May", 5, "Jun", 6 ) RETURN DATE ( 2020, month, LEFT ( 'Table'[Close], 2 ) )3.Cree una tabla de calendario.
Dates = ADDCOLUMNS ( CALENDAR ( DATE ( 2020, 1, 1 ), DATE ( 2020, 12, 31 ) ), "day", DAY ( [Date] ), "Period", DAY ( [Date] ) & "/" & FORMAT ( [Date], "mmm" ) )4.Crear una nueva tabla que es una combinación y filtrado de las dos tablas anteriores.
NewTable = SUMMARIZE ( ADDCOLUMNS ( FILTER ( CROSSJOIN ( 'Dates', 'Table' ), [Date] <= [CloseDate] && [Date] >= [OpenDate] && [day] = 1 ), "Days by Month", IF ( EOMONTH ( [Date], 0 ) < [CloseDate], DAY ( EOMONTH ( [Date], 0 ) ), DAY ( [CloseDate] ) ) ), [Ticket], [Period], [Days by Month] )Puede consultar más detalles desde aquí.
Saludos
Stephen Tao
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
6 Replies
- Greg_Deckler
Community Champion
@Williamspsouza - Echa un vistazo a las Entradas Abiertas. Será el mismo concepto básico. https://community.powerbi.com/t5/Quick-Measures-Gallery/Open-Tickets/m-p/409364#M147
- AnonymousNot applicable
Agradezco la respuesta, pero no responde a mi pregunta. ¿Cuánto tiempo ha estado abierto una entrada cada mes?
- Ashish_Mathur
Super User
Hola
¿Has comprobado mi resultado?
- Ashish_Mathur
Super User
- FrankAT
Community Champion
Hola @Williamspsouza
puede hacerlo con Power Query de la siguiente manera:
// Table let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WSkxKVtJRMjDUByIjAyMDIMfQAIWjFKsTrZSSmoauDMQxgnGMjcDK0jMysZkGV2ZiCFaWlZ2DTZkxjGMOtDQWAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Ticket = _t, Open = _t, Close = _t, Age = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Ticket", type text}, {"Open", type date}, {"Close", type date}, {"Age", Int64.Type}}), #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each {Number.From([Open])..Number.From([Close])}), #"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom"), #"Changed Type1" = Table.TransformColumnTypes(#"Expanded Custom",{{"Custom", type date}}), #"Inserted Month" = Table.AddColumn(#"Changed Type1", "Month", each Date.Month([Custom]), Int64.Type), #"Added Custom1" = Table.AddColumn(#"Inserted Month", "Day", each 1), #"Changed Type2" = Table.TransformColumnTypes(#"Added Custom1",{{"Day", Int64.Type}}), #"Grouped Rows" = Table.Group(#"Changed Type2", {"Ticket", "Month"}, {{"Sum", each List.Sum([Day]), type nullable number}}), #"Added Custom2" = Table.AddColumn(#"Grouped Rows", "Period", each #date(2020,[Month],1)), #"Removed Columns" = Table.RemoveColumns(#"Added Custom2",{"Month"}), #"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"Ticket", "Period", "Sum"}), #"Changed Type3" = Table.TransformColumnTypes(#"Reordered Columns",{{"Period", type date}}) in #"Changed Type3"No Molesta Con el Fecha Formato. eso Es En el Forma De Mi Región.Con saludos amables desde la ciudad donde la leyenda del 'Pied Piper de Hamelin' está en casa
FrankAT (Orgulloso de ser un Datanaut) - AnonymousNot applicable
Hola @Williamspsouza ,
1.My datos de ejemplo es este.
Boleto
Edad
Abierto
Cerca
Abc
10
01/Jan
10/Ene
Def
32
01/Jan
01/Feb
Ghi
41
01/Jan
10/Febrero
Jkl
70
01/Jan
10/Mar
2.Crear columnas calculadas para obtener la fecha de apertura y la fecha de cierre.
OpenDate = VAR month = SWITCH ( RIGHT ( 'Table'[Open], 3 ), "Jul", 7, "Aug", 8, "Sep", 9, "Oct", 10, "Nov", 11, "Dec", 12, "Jan", 1, "Feb", 2, "Mar", 3, "Apr", 4, "May", 5, "Jun", 6 ) RETURN DATE ( 2020, month, LEFT ( 'Table'[Open], 2 ) )CloseDate = VAR month = SWITCH ( RIGHT ( 'Table'[Close], 3 ), "Jul", 7, "Aug", 8, "Sep", 9, "Oct", 10, "Nov", 11, "Dec", 12, "Jan", 1, "Feb", 2, "Mar", 3, "Apr", 4, "May", 5, "Jun", 6 ) RETURN DATE ( 2020, month, LEFT ( 'Table'[Close], 2 ) )3.Cree una tabla de calendario.
Dates = ADDCOLUMNS ( CALENDAR ( DATE ( 2020, 1, 1 ), DATE ( 2020, 12, 31 ) ), "day", DAY ( [Date] ), "Period", DAY ( [Date] ) & "/" & FORMAT ( [Date], "mmm" ) )4.Crear una nueva tabla que es una combinación y filtrado de las dos tablas anteriores.
NewTable = SUMMARIZE ( ADDCOLUMNS ( FILTER ( CROSSJOIN ( 'Dates', 'Table' ), [Date] <= [CloseDate] && [Date] >= [OpenDate] && [day] = 1 ), "Days by Month", IF ( EOMONTH ( [Date], 0 ) < [CloseDate], DAY ( EOMONTH ( [Date], 0 ) ), DAY ( [CloseDate] ) ) ), [Ticket], [Period], [Days by Month] )Puede consultar más detalles desde aquí.
Saludos
Stephen Tao
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.