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

Ajuste de Power Query de tabla de fechas para fecha de finalización

Hola a todos,

Tengo la siguiente consulta de energía ejecutando mi tabla de fechas. Estoy extrayendo la fecha de inicio de una columna específica en los datos y resulta ser 1/1/2018, lo cual es bueno, pero la configuré donde la fecha de finalización es la fecha máxima de otra columna en una tabla específica. Creo que no tener la fecha de finalización siempre 12/31 de un año puede estar echando por fuera de lugar mis medidas de inteligencia de tiempo usando TotalYTD, etc.

No tengo mucha experiencia en la consulta de Power y quería ver si alguien tiene una idea de cómo hacer que mi valor EndDate tome el año máximo en los datos, pero lo lleve hasta el 31/12. Por lo tanto, si la columna de la que extrae la fecha máxima tiene una fecha de 1/2/2022, entonces la tabla de fechas se ejecutaría hasta el 31/12/2022.

Primero, ¿se descartaría la inteligencia del tiempo si no tengo el comienzo de la tabla de fechas comenzando en 1/1 y la última fecha es 12/31?

Si es así, ¿alguna idea?

Consulta de energía actual:

dejar
    Today=Date.From(DateTime.LocalNow()), // la fecha de hoy
    StartDate = List.Min(Table.Column(vDonorFile, "ReferredOn (DateOnly)")),
    EndDate = List.Max(Table.Column(v_EyeDist_Request,"SurgeryDateDup")),
    StartofFiscalYear=7, 
    firstDayofWeek=Día.Lunes,

Fuente=Lista.Fechas(
        Fecha de inicio,
        Duration.Days(EndDate-StartDate)+1,
        #duration(1,0,0,0)
    ),
    #"Convertido a tabla" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Columnas renombradas" = Table.RenameColumns(#"Converted to Table",{{"Column1", "Date"}}),
    #"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",{{"Date", type date}}),
    #"Año insertado" = Table.AddColumn(#"Tipo cambiado", "Año", cada Fecha.Año([Fecha]), Int64.Type),
    #"Inserted Start of Year" = Table.AddColumn(#"Inserted Year", "Start of Year", each Date.StartOfYear([Date]), type date),
    #"Inserted End of Year" = Table.AddColumn(#"Inserted Start of Year", "End of Year", each Date.EndOfYear([Date]), type date),
    #"Mes insertado" = Table.AddColumn(#"Inserted End of Year", "Month", each Date.Month([Date]), Int64.Type),
    #"Inserted Start of Month" = Table.AddColumn(#"Inserted Month", "Start of Month", each Date.StartOfMonth([Date]), escriba date),
    #"Inserted End of Month" = Table.AddColumn(#"Inserted Start of Month", "End of Month", each Date.EndOfMonth([Date]), escriba date),
    #"Días insertados en el mes" = Table.AddColumn(#"Inserted End of Month", "Days in Month", each Date.DaysInMonth([Date]), Int64.Type),
    #"Día insertado" = Table.AddColumn(#"Días insertados en mes", "Día", cada Fecha.Día([Fecha]), Int64.Type),
    #"Nombre del día insertado" = Table.AddColumn(#"Día insertado", "Nombre del día", cada Date.DayOfWeekName([Fecha]), escriba texto),
    #"Día de la semana insertado" = Table.AddColumn(#"Nombre del día insertado", "Día de la semana", cada Date.DayOfWeek([Date]), Int64.Type),
    #"Día del año insertado" = Table.AddColumn(#"Día de la semana insertado", "Día del año", cada Date.DayOfYear([Fecha]), Int64.Type),
    #"Nombre del mes insertado" = Table.AddColumn(#"Día del año insertado", "Nombre del mes", cada Fecha.NombreDeManual([Fecha]), escriba texto),
    #"Trimestre insertado" = Table.AddColumn(#"Nombre del mes insertado", "Trimestre", cada Date.QuarterOfYear([Fecha]), Int64.Type),
    #"Inserted Start of Quarter" = Table.AddColumn(#"Inserted Quarter", "Start of Quarter", each Date.StartOfQuarter([Date]), type date),
    #"Inserted End of Quarter" = Table.AddColumn(#"Inserted Start of Quarter", "End of Quarter", each Date.EndOfQuarter([Date]), type date),
    #"Semana del año insertada" = Table.AddColumn(#"Inserted End of Quarter", "Week of Year", each Date.WeekOfYear([Date],firstDayofWeek), Int64.Type),
    #"Semana del mes insertada" = Table.AddColumn(#"Semana del año insertada", "Semana del mes", cada fecha.WeekOfMonth([Fecha],firstDayofWeek), Int64.Type),
    #"Inserted Start of Week" = Table.AddColumn(#"Inserted Week of Month", "Start of Week", each Date.StartOfWeek([Date],firstDayofWeek), escriba date),
    #"Insertado fin de semana" = Table.AddColumn(#"Insertado inicio de semana", "Fin de semana", cada Date.EndOfWeek([Date],firstDayofWeek), escriba date),
    FiscalMonthBaseIndex=13-StartofFiscalYear,
    adjustedFiscalMonthBaseIndex=if(FiscalMonthBaseIndex>=12 o FiscalMonthBaseIndex<0) then 0 else FiscalMonthBaseIndex,
    #"Added Custom" = Table.AddColumn(#"Inserted End of Week", "FiscalBaseDate", each Date.AddMonths([Date],adjustedFiscalMonthBaseIndex)),
    #"Changed Type1" = Table.TransformColumnTypes(#"Added Custom",{{"FiscalBaseDate", type date}}),
    #"Año insertado1" = Table.AddColumn(#"Changed Type1", "Year.1", each Date.Year([FiscalBaseDate]), Int64.Type),
    #"Columnas renombradas1" = Table.RenameColumns(#"Año insertado1",{{"Año.1", "Año fiscal"}}),
    #"Inserted Quarter1" = Table.AddColumn(#"Renamed Columns1", "Quarter.1", each Date.QuarterOfYear([FiscalBaseDate]), Int64.Type),
    #"Columnas renombradas2" = Table.RenameColumns(#"Inserted Quarter1",{{"Quarter.1", "Fiscal Quarter"}}),
    #"Mes insertado1" = Table.AddColumn(#"Columnas renombradas2", "Mes.1", cada Fecha.Mes([FiscalBaseDate]), Int64.Type),
    #"Columnas renombradas3" = Table.RenameColumns(#"Mes insertado1",{{"Mes.1", "Mes fiscal"}}),
    #"Columnas eliminadas" = Table.RemoveColumns(#"Columnas renombradas3",{"FiscalBaseDate"}),
    #"Edad insertada" = Table.AddColumn(#"Columnas eliminadas", "Edad", cada [Fecha]-Hoy, duración del tipo),
    #"Días extraídos" = Table.TransformColumns(#"Edad insertada",{{"Edad", Duración.Días, Int64.Type}}),
    #"Columnas renombradas4" = Table.RenameColumns(#"Días extraídos",{{"Edad", "Desplazamiento de día"}}),
    #"Added Custom1" = Table.AddColumn(#"Renamed Columns4", "Month Offset", cada uno (([Year]-Date.Year(Today))*12)
+([Mes]-Fecha.Mes(Hoy))),
    #"Changed Type2" = Table.TransformColumnTypes(#"Added Custom1",{{"Month Offset", Int64.Type}}),
    #"Added Custom2" = Table.AddColumn(#"Changed Type2", "Year Offset", each [Year]-Date.Year(Today)),
    #"Tipo cambiado3" = Table.TransformColumnTypes(#"Added Custom2",{{"Year Offset", Int64.Type}}),
    #"Added Custom3" = Table.AddColumn(#"Changed Type3", "Quarter Offset", cada uno (([Year]-Date.Year(Today))*4)
+([Trimestre]-Date.QuarterOfYear(Hoy))),
    #"Changed Type4" = Table.TransformColumnTypes(#"Added Custom3",{{"Quarter Offset", Int64.Type}, {"Date", type date}}),
    #"Filas ordenadas" = Table.Sort(#"Changed Type4",{{"Day Offset", Order.Ascending}})
en
    #"Filas ordenadas"

7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

La tabla del calendario tiene que ser contigua, y tiene que cubrir tanto las fechas de los hechos como el resultado de los cálculos de inteligencia de tiempo. Por lo tanto, cortar las fechas futuras está bien a menos que intente hacer cosas como "los datos del próximo mes".

@lbendlin

Eso es lo que estoy encontrando. No quería establecer la tabla de fechas en un año máximo específico, ya que en el futuro puede aparecer esa fecha máxima, por lo que vinculé la fecha máxima a una columna específica en una tabla que trata sobre pedidos futuros. El problema es que parece que algunos cálculos de inteligencia de tiempo se desatan. Quería ver si hay una mezcla de los dos para mantener el fluido de la fecha máxima, pero también tomar la fecha máxima en la columna específica y llevarla al final del año calendario. Me siento cómodo con Dax, pero con power query todavía soy relativamente nuevo.

¿Alguna idea sobre el código de power query para tomar la fecha máxima de una columna y llevarla a fin de año?

Mire esto desde una perspectiva diferente: si deshabilita la fecha / hora automática (como debería), ahorrará mucho más espacio en el modelo de datos de lo que gasta al especificar un calendario fijo que cubra un par de años en el futuro (por ejemplo, hasta diciembre de 2023).

@lbendlin

Absolutamente. Definitivamente no quiero tener muchos años en el futuro como parte de mi tabla de fechas, pero por ejemplo, si mi fecha máxima en la columna de la tabla es 17/11/2021, entonces mi inteligencia de tiempo funcionaría mejor si la consulta de energía tomara la fecha máxima al 31/12/2021, ya que esa es la última fecha del año a partir de la fecha máxima en la columna de la tabla. Una vez que se ingresa una fecha en 2022 en la columna de la tabla, la tabla de fechas iría al 31/12/2022.

la única razón por la que me pregunto es ver si tener la fecha máxima como no 12/31 de un año específico, ¿esto arrojaría la inteligencia de tiempo de Inicio de año?

Tenga en cuenta que los años fiscales a menudo no terminan el 31/12. Así que no, no es obligatorio. Pero tampoco hará daño.

@lbendlin

entonces, ¿sabe de algo que pueda agregar a la función List.Max para la fecha de finalización que tomará mi fecha máxima y la llevará a la última fecha del calendario del año máximo de mi columna?

Si sus fechas de hecho están limpias (sin fechas locas), entonces CALENDARAUTO() le dará eso de forma gratuita.

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.