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

Función "Secuencia" de Excel en Power Bi

Me gustaría poder replicar esta salida en Power Bi

SM4437_0-1653020153887.png

Cualquier ayuda sería apreciada, col T a Y están en una sola tabla.

Cualquier ayuda sería apreciada.

17 REPLIES 17
Syndicate_Admin
Administrator
Administrator

Hola

Este código M funciona

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlXSUYpMTSwCUgamuoYGukYGhmZAjqGBUqwOirQhsrQpuqwRsqwRuqyBoa6BGUjWHMgxwStroRQbCwA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Interval = _t, Period = _t, #"Interval Start" = _t, #"Repeat in contract term" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Interval", Int64.Type}, {"Period", type text}, {"Interval Start", type date}, {"Repeat in contract term", Int64.Type}}),
    #"Duplicated Column" = Table.DuplicateColumn(#"Changed Type", "Repeat in contract term", "Repeat in contract term - Copy"),
    #"Added Custom" = Table.AddColumn(#"Duplicated Column", "Custom", each {1..[Repeat in contract term]}),
    #"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom"),
    #"Subtracted from Column" = Table.TransformColumns(#"Expanded Custom", {{"Custom", each _ - 1, type number}}),
    #"Inserted Multiplication" = Table.AddColumn(#"Subtracted from Column", "Multiplication", each [Interval] * [Custom], type number),
    #"Added Custom1" = Table.AddColumn(#"Inserted Multiplication", "Custom.1", each Date.AddYears([Interval Start],[Multiplication])),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"Repeat in contract term", "Multiplication"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Repeat in contract term - Copy", "Repeat in contract term"}}),
    #"Added Prefix" = Table.TransformColumns(#"Renamed Columns", {{"Custom", each "Date " & Text.From(_, "en-IN"), type text}}),
    #"Replaced Value" = Table.ReplaceValue(#"Added Prefix","Date 0","Interval Start Date",Replacer.ReplaceText,{"Custom"}),
    #"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Replaced Value", {{"Custom", type text}}, "en-IN"), List.Distinct(Table.TransformColumnTypes(#"Replaced Value", {{"Custom", type text}}, "en-IN")[Custom]), "Custom", "Custom.1")
in
    #"Pivoted Column"

Espero que esto ayude.

Untitled.png

Hola Ashish, ¿hay alguna manera de modificar el guión para que calcule las fechas de vencimiento a partir de una frecuencia diferente? ¿Los intervalos no son solo años sino también meses?

Estoy seguro de que se puede hacer, pero creo que eso haría que el código M fuera más complicado y largo.

Entendido, aprecia tu ayuda para resolver esto por mí. Si podemos probar el Código M extendido, sería genial. ¿Lo haría más fácil si el intervalo fuera solo mths? podríamos cambiar el intervalo de años a meses?

Podemos intentarlo. Muestre un conjunto de datos donde yu tenga diferentes períodos de intervalo y también muestre el resultado esperado con mucha claridad.

SM4437_0-1653272990775.png

Este es el resultado final que estoy buscando

Esa imagen no aparece correctamente cuando hago clic en ella: el fondo es negro y, por lo tanto, no se puede ver. Además, comparta los datos de origen en un formulario que se pueda pegar en un archivo de MS Excel.

SM4437_0-1653276176904.png

Este es el resultado que quiero, por alguna razón obtengo un error meassge al intentar pegar en la tabla?

Falta la columna Repetir en términos de contrato. Muestre esa columna también (será en años o columnas). mostrar claramente el resultado esperado.

El col repetido es el número de col que se crea, este valor cambiará dependiendo del número de veces que se repita la secuencia en el plazo del contrato (por ejemplo, un contrato de 10 años con un intervalo mensual se repetirá 120 veces, es decir, 120 columnas / fechas)

SM4437_0-1653340967291.png

Hola

Descargue el archivo PBI desde aquí.

Espero que esto ayude.

Untitled.png

Gracias Ashish, immnot que familiarizado con el código M, estoy asumiendo que simplemente cambio la sección de origen?

Eres nosotros. Sí.

gracias por su ayuda

Syndicate_Admin
Administrator
Administrator

Tomando la primera fila como ejemplo, ¿por qué la fecha de vencimiento1 debería ser el 4/10/2021 si están espaciadas en un intervalo de 5 años? Debe ser el 5/10/2021 y la fecha de vencimiento 2 debe ser el 5/10/2026 no el 3/10/2026. No se debe multiplicar 365 por 5 para llegar a los 1825 días. Simplemente debe agregar 5 años a las fechas para llegar al resultado final, a menos que tenga razones para agregar 1825 días, no 5 años.

Hágame saber la lógica, luego puedo proporcionar la fórmula DAX adecuada.

Hola, gracias por la rápida respuesta, simplemente multiplicar años por 365 en excel fue la forma más sencilla de hacerlo, el resultado final no es tan sensual. Dicho esto, aprecie si puede optimizar el calc en Dax.

El resultado final que necesito es la fecha de vencimiento progresiva basada en el intervalo que se muestra en columnas separadas

Además, el intervalo en cada fila puede cambiar entre años, 3M, 6M, 1W

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.