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

Comportamiento de Curmonthoffset en el nivel Q

Hola, estoy usando la tabla de calendario creada por Avi Singh. Estoy confundido sobre el comportamiento de la columna curmonthoffset.

Este es el código de la tabla:

dejar
    /*
    Este calendario fue creado y proporcionado por Avi Singh****
    Esto se puede compartir libremente siempre que se conserve este comentario de texto.****
    http://www.youtube.com/PowerBIPro
    www.LearnPowerBI.com por Avi Singh
    */
    #"LearnPowerBI.com por Avi Singh" = 1,
    StartDate = #date(2016, 1, 1),
    EndDate = Date.EndOfYear(DateTime.Date(DateTime.FixedLocalNow())) /*was "#date(2017, 1, 1)" Actualizado el 201802027: el fin de año codificado duro hizo que algunas fórmulas se rompieran, cambiando a fecha dinámica*/,
    Utilizado para los cálculos de la columna 'Offset', puede codificar CurrentDate para pruebas, por ejemplo, #date(2017,9,1)
    CurrentDate = DateTime.Date(DateTime.FixedLocalNow()),
    Especifique el último mes de su año fiscal, por ejemplo, si junio es el último mes de su año fiscal, especifique 6
    FiscalYearEndMonth = 6,
    #"==ESTABLECER PARÁMETROS ARRIBA==" = 1,
    #"==Columna de fecha de compilación==" = #"==ESTABLECER PARÁMETROS ARRIBA==",
    ListDates = List.Dates(StartDate, Number.From(EndDate - StartDate)+1, #duration(1,0,0,0)),
    #"Convertido a tabla" = Table.FromList(ListDates, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Columnas renombradas como fecha" = Table.RenameColumns(#"Converted to Table",{{"Column1", "Date"}}),
    En lo que respecta a Power BI, la columna 'Fecha' es todo lo que se necesita 🙂 Pero continuaremos y agregaremos algunas columnas amigables con los humanos.
    #"Changed Type to Date" = Table.TransformColumnTypes(#"Columnas renombradas como fecha",{{"Fecha", escriba fecha}}),
    #"==Agregar columnas de calendario==" = #"Tipo cambiado a fecha",
    #"Added Calendar MonthNum" = Table.AddColumn(#"==Agregar columnas de calendario==", "MonthNum", cada Date.Month([Date]), Int64.Type),
    #"Added QuarterNum" = Table.AddColumn(#"Added Calendar MonthNum", "QuarterNum", each Date.QuarterOfYear([Date]), Int64.Type),
    #"Added Month Name" = Table.AddColumn(#"Added QuarterNum", "Month", each Text.Start(Date.MonthName([Date]),3), escriba texto),
    #"Added Month Name Long" = Table.AddColumn(#"Added Month Name", "MonthLong", each Date.MonthName([Date]), escriba texto),
    #"Added Calendar Quarter" = Table.AddColumn(#"Added Month Name Long", "Quarter", each "Q" & Text.From(Date.QuarterOfYear([Date]))),
    #"Año calendario agregado" = Table.AddColumn(#"Added Calendar Quarter", "Year", each Date.Year([Date]), Int64.Type),
    #"==Agregar columnas del calendario fiscal==" = #"Año calendario agregado",
    #"Added FiscalMonthNum" = Table.AddColumn(#"==Agregar columnas del calendario fiscal==", "FiscalMonthNum", cada uno si [MonthNum] > FiscalYearEndMonth
luego [MonthNum] - FiscalYearEndMonth
else [MonthNum] + (12 - FiscalYearEndMonth), número de tipo),
    #"Added FiscalMonth Name" = Table.AddColumn(#"Added FiscalMonthNum", "FiscalMonth", cada [Mes]),
    #"Added FiscalMonth Name Long" = Table.AddColumn(#"Added FiscalMonth Name", "FiscalMonthLong", each [MonthLong]),
    #"Added FiscalQuarter" = Table.AddColumn(#"Added FiscalMonth Name Long", "FiscalQuarter", each "FQ" & Text.From(Number.RoundUp([FiscalMonthNum] / 3,0))),
    #"Added FiscalYear" = Table.AddColumn(#"Added FiscalQuarter", "FiscalYear", cada "FY" & 
Text.End(
  Text.From(
    si [MonthNum] > FiscalYearEndMonth
    luego [Año] + 1
    else [Año]
  )
  , 2
)),

#"==Agregar columnas de desplazamiento de fecha de calendario==" = #"Año fiscal agregado",
    Se puede utilizar para, por ejemplo, mostrar los últimos 3 meses (CurMonthOffset = 0, -1, -2)
    #"Added CurMonthOffset" = Table.AddColumn(#"==Add Calendar Date Offset Columns==", "CurMonthOffset", cada uno ( Date.Year([Date]) - Date.Year(CurrentDate) ) * 12
+ Date.Month([Date]) - Date.Month(CurrentDate), Int64.Type),
Se puede utilizar para, por ejemplo, mostrar los últimos 3 trimestres (CurQuarterOffset = 0, -1, -2)
    #"Added CurMonthOffset" = Table.AddColumn(DataTypes, "CurrentMonthOffset", cada uno (Date.Year([Date])- Date.Year(CurrentDate) ) * 12 + Date.Month([Date]) - Date.Month(CurrentDate)),
   Table.AddColumn(#"==Agregar columnas de desplazamiento de fecha de calendario==", "CurMonthOffset", cada uno ( Date.Year([Date]) - Date.Year(CurrentDate) ) * 12 + Date.Month([Date]) - Date.Month(CurrentDate), Int64.Type),
    Se puede utilizar para, por ejemplo, mostrar los últimos 3 trimestres (CurQuarterOffset = 0, -1, -2)
    #"Added CurQuarterOffset" = Table.AddColumn(#"Added CurMonthOffset", "CurQuarterOffset", cada /*Diferencia de año*/
       ( Date.Year([Date]) - Date.Year(CurrentDate) )*4
       /*Diferencia trimestral*/
      + Number.RoundUp(Date.Month([Fecha]) / 3) 
      - Number.RoundUp(Date.Month(CurrentDate) / 3),
Int64.Type),
    Se puede utilizar para, por ejemplo, mostrar los últimos 3 años (CurYearOffset = 0, -1, -2)
    #"Added CurYearOffset" = Table.AddColumn(#"Added CurQuarterOffset", "CurYearOffset", each Date.Year([Date]) - Date.Year(CurrentDate), Int64.Type),
    Se puede utilizar para, por ejemplo, filtrar todas las fechas futuras
    #"Added FutureDate Flag" = Table.AddColumn(#"Added CurYearOffset", "FutureDate", cada uno si [Date] > CurrentDate y luego "Future" o "Past" ),
    FiscalYearOffset es el único Offset que es diferente.
    FiscalQuarterOffset = es igual que CurQuarterOffset
    FiscalMonthOffset = es lo mismo que CurMonthOffset
    #"==Agregar FiscalYearOffset==" = #"Added FutureDate Flag",
    #"Filas filtradas a CurrentDate" = Table.SelectRows(#"==Agregar FiscalYearOffset==", cada una ([Date] = CurrentDate)),
    CurrentFiscalYear = #"Filas filtradas a CurrentDate"{0}[FiscalYear],
    #"Continuar... Orig Table" = #"==Agregar FiscalYearOffset==",
    #"Added CurFiscalYearOffset" = Table.AddColumn(#"Continue... Orig Table", "CurFiscalYearOffset", cada Number.From(Text.Range([FiscalYear],2,2)) - 
Number.From(Text.Range(CurrentFiscalYear,2,2))
/*Extraiga la porción numérica, por ejemplo, FY18 = 18*/),
    #"==Agregar columnas generales==" = #"Añadido CurFiscalYearOffset",
    Se utiliza como 'Ordenar por columna' para las columnas MonthYear
    #"Added MonthYearNum" = Table.AddColumn(#"==Agregar columnas generales==", "MonthYearNum", cada [Year]*100 + [MonthNum] /*por ejemplo, Sep-2016 se convertiría en 201609*/, Int64.Type),
    #"Added QuarterYearNum" = Table.AddColumn(#"Added MonthYearNum", "QuarterYearNum", cada [Year]*100 + [QuarterNum] /*por ejemplo, Sep-2016 se convertiría en 201609*/, Int64.Type),
    #"Added MonthYear" = Table.AddColumn(#"Added QuarterYearNum", "MonthYear", each [Month] & "-" & Text.End(Text.From([Year]),2)),
    #"Added QuarterYear" = Table.AddColumn(#"Added MonthYear", "QuarterYear", cada [Trimestre] & "-" & Text.End(Text.From([Año]),2)),
    #"Added MonthYearLong" = Table.AddColumn(#"Added QuarterYear", "MonthYearLong", each [Month] & "-" & Text.From([Year])),
    #"Added WeekdayNum" = Table.AddColumn(#"Added MonthYearLong", "WeekdayNum", each Date.DayOfWeek([Date]), Int64.Type),
    #"Added Weekday Name" = Table.AddColumn(#"Added WeekdayNum", "Weekday", each Text.Start(Date.DayOfWeekName([Date]),3), escriba texto),
    #"Added WeekdayWeekend" = Table.AddColumn(#"Added Weekday Name", "WeekdayWeekend", cada uno if [WeekdayNum] = 0 o [WeekdayNum] = 6
luego "Fin de semana"
else "Weekday"),
    #"==Mejorar ultimate table" = #"Añadido WeekdayWeekend",
    #"----Add WeekSequenceNum----" = #"==Mejorar Ultimate Table",
    #"Fila filtrada solo domingos (inicio de semana)" = Table.SelectRows(#"----Add WeekSequenceNum----", cada uno ([WeekdayNum] = 0)),
    #"Added Index WeekSequenceNum" = Table.AddIndexColumn(#"Filtered Rows Sundays Only (Start of Week)", "WeekSequenceNum", 2, 1),
    #"Merged Queries Ultimate Table to WeekSequenceNum" = Table.NestedJoin(#"==Improve Ultimate Table",{"Date"},#"Added Index WeekSequenceNum",{"Date"},"Added Index WeekNum",JoinKind.LeftOuter),
    #"Expanded Added Index WeekNum" = Table.ExpandTableColumn(#"Merged Queries Ultimate Table to WeekSequenceNum", "Added Index WeekNum", {"WeekSequenceNum"}, {"WeekSequenceNum"}),
    de alguna manera termina siendo desorteado después de Expandir columna, no debería importar para la tabla final, pero hace que sea más difícil depurar y verificar que todo sea correcto. Ordenándolo así.
    #"ReOrdenadas filas por fecha" = Table.Sort(#"Expanded Added Index WeekNum",{{"Date", Order.Ascending}}),
    #"Filled Down WeekSequenceNum" = Table.FillDown(#"ReSorted Rows by Date",{"WeekSequenceNum"}),
    #"Replaced Value WeekSequenceNum null with 1" = Table.ReplaceValue(#"Filled Down WeekSequenceNum",null,1,Replacer.ReplaceValue,{"WeekSequenceNum"}),
    #"----WeekSequenceNum Complete----" = #"Valor reemplazado WeekSequenceNum null con 1",
    Current_WeekSequenceNum = #"----WeekSequenceNum Complete----"{[Date = CurrentDate]}? [WeekSequenceNum],
    #"Added Custom CurWeekOffset" = Table.AddColumn(#"----WeekSequenceNum Complete----", "CurWeekOffset", cada uno [WeekSequenceNum] - Current_WeekSequenceNum, Int64.Type),
    #"Filas ordenadas" = Table.Sort(#"Added Custom CurWeekOffset",{{"MonthNum", Order.Ascending}}),
    #"Tipo modificado" = Table.TransformColumnTypes(#"Filas ordenadas",{{"Fecha", tipo fecha}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Weeknumber", each Date.WeekOfYear([Date],Day.Monday)),
    #"Added Index" = Table.AddIndexColumn(#"Added Custom", "Index", 0, 1, Int64.Type),
    #"Tipo modificado con configuración regional" = Table.TransformColumnTypes(#"Índice agregado", {{"Fecha", fecha de tipo}}, "en-US")
en
    #"Tipo cambiado con configuración regional"

Cuando agrego esto a una medida con

SELECTEDVALUE ( Dates[CurMonthOffset] ) = 0

Esto regresa correctamente cuando lo pongo en una tabla a nivel de mes, pero cuando hago la tabla a nivel trimestral, devuelve true en todas partes, y cuando lo hago en un nivel de semana devuelve aleatoriamente true / false., vea las imágenes que agregué.Capture.PNGCapture.PNG

1 ACCEPTED SOLUTION

Encontré una solución yo mismo:

Cumulative Won MRR = 

SWITCH(
    TRUE(),
and(SELECTEDVALUE(Dates[CuryearOffset])=0,and(SELECTEDVALUE(Dates[CurmonthOffset])=0,SELECTEDVALUE(Dates[CurQuarterOffset])=0)), 1),
0)

View solution in original post

6 REPLIES 6
Syndicate_Admin
Administrator
Administrator

@Laila92 ,

SELECTEDVALUE() devuelve el valor cuando el contexto del nombre de columna se ha filtrado a un solo valor distinto. De lo contrario, devuelve un resultado alternativo. El resultado alternativo es el valor devuelto cuando el contexto para el nombre de la columna se ha filtrado a cero o más de un valor distinto. Cuando no se proporciona, el valor predeterminado es BLANK().

En resumen, si hay varios [CurMonthOffset] para la fila actual, se devolverá blank(). Blank()=0 por lo que la medida devuelve true.

Saludos

Arrendajo

Encontré una solución yo mismo:

Cumulative Won MRR = 

SWITCH(
    TRUE(),
and(SELECTEDVALUE(Dates[CuryearOffset])=0,and(SELECTEDVALUE(Dates[CurmonthOffset])=0,SELECTEDVALUE(Dates[CurQuarterOffset])=0)), 1),
0)
Syndicate_Admin
Administrator
Administrator

@Laila92 , Qtr año es también de la tabla de fechas ?

Pruebe como

maxx(SELECTEDVALUE ( Dates), Dates[CurMonthOffset] ) = 0

Qtr año es también de la tabla de fechas ? -

maxx(SELECTEDVALUE ( Dates), Dates[CurMonthOffset] ) = 0 - ESTA medida no funciona, debería ser
maxx(Fechas,SELECTEDVALUE (Fechas[CurMonthOffset] )) = 0 Supongo, pero ¿por qué eso resolvería el problema? (no cambia el resultado en la tabla)



@Laila92 , creo que mi error, debería ser

maxx(allselected( Dates), Dates[CurMonthOffset] ) = 0

¿Puede compartir datos de muestra y salida de muestra en formato de tabla? O un pbix de muestra después de eliminar datos confidenciales.

sin embargo, ¿por qué funcionaría esto? esta fórmula solo me muestra el curmonthoffset máximo que tengo en la tabla, no hace nada relacionado con si el de la fila actual es 0 o no.
No hay datos de muestra, solo la tabla de calendario que di y la medida.

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.