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.
hola
Actualmente estoy teniendo esta dimensión de fecha creada usando Dax de la siguiente manera:
Entre el período de 1/31/2021 a 2/6/2021, se definió como W6 bajo WeekName, sin embargo, residen bajo el Mes de Enero y febrero como se muestra anteriormente, por lo que cuando muestre el informe basado solo en WeekName, el resultado se mostrará correctamente, sin embargo, cuando agregué la columna Mes, los registros en 1/31/2021 se filtrarán.
¿Cómo puedo agregar una nueva columna mes que cambiará el enero a febrero para el 1/31/2021? Como este problema persistirá durante todos los meses cruzados dentro de la dimensión de fecha, estaba pensando si existe tal manera de que el mes se pueda modificar en consecuencia en función del recuento de WeekName y YearMonth.
Por ejemplo, en este caso, si agrupamos lo siguiente, deberíamos obtener el siguiente recuento
MesCaption | | WeekName Año | contar
Jan | W6 | 2021.01 | 1
| de febrero W6 | 2021.02 | 6
A continuación, modifique Enero a Febrero.
Sin embargo, si el grupo cuenta si es mayor en enero durante febrero como se muestra, a continuación, el mes debe modificarse a Enero en su lugar:
MesCaption | | WeekName Año | contar
Jan | W5 | 2020.01 | 6
| de febrero W5 | 2020.02 | 1
¿Hay alguna sugerencia sobre cómo podemos lograr la modificación del valor del mes en función de la suposición anterior?
Solved! Go to Solution.
Ahí @Roy_tap,
Puede crear dos columnas calculadas como se indica a continuación para obtener el nombre actualizado del mes, busque los datos adjuntos para los detalles.
1. Crear campo de lunes a viernes
Weekday = WEEKDAY('Test_Date'[Date],2)
2. Cree otra columna calculada para obtener el nombre actualizado del mes
New Month =
VAR _minmonth =
MONTH (
CALCULATE (
MIN ( 'Test_Date'[Date] ),
FILTER (
'Test_Date',
'Test_Date'[Year] = EARLIER ( 'Test_Date'[Year] )
&& 'Test_Date'[WeekName] = EARLIER ( 'Test_Date'[WeekName] )
)
)
)
VAR _maxmonth =
MONTH (
CALCULATE (
MAX ( 'Test_Date'[Date] ),
FILTER (
'Test_Date',
'Test_Date'[Year] = EARLIER ( 'Test_Date'[Year] )
&& 'Test_Date'[WeekName] = EARLIER ( 'Test_Date'[WeekName] )
)
)
)
VAR _weekday =
CALCULATE (
MIN ( 'Test_Date'[Weekday] ),
FILTER (
'Test_Date',
'Test_Date'[Year] = EARLIER ( 'Test_Date'[Year] )
&& 'Test_Date'[WeekName] = EARLIER ( 'Test_Date'[WeekName] )
&& DAY ( 'Test_Date'[Date] ) = 1
)
)
VAR _mindate =
CALCULATE (
MIN ( 'Test_Date'[Date] ),
FILTER (
'Test_Date',
'Test_Date'[Year] = EARLIER ( 'Test_Date'[Year] )
&& 'Test_Date'[WeekName] = EARLIER ( 'Test_Date'[WeekName] )
)
)
VAR _maxdate =
CALCULATE (
MAX ( 'Test_Date'[Date] ),
FILTER (
'Test_Date',
'Test_Date'[Year] = EARLIER ( 'Test_Date'[Year] )
&& 'Test_Date'[WeekName] = EARLIER ( 'Test_Date'[WeekName] )
)
)
RETURN
IF (
_minmonth = _maxmonth,
'Test_Date'[MonthCaption],
IF ( _weekday < 4, FORMAT ( _maxdate, "mmm" ), FORMAT ( _mindate, "mmm" ) )
)
Saludos
Ahí @Roy_tap,
Puede crear dos columnas calculadas como se indica a continuación para obtener el nombre actualizado del mes, busque los datos adjuntos para los detalles.
1. Crear campo de lunes a viernes
Weekday = WEEKDAY('Test_Date'[Date],2)
2. Cree otra columna calculada para obtener el nombre actualizado del mes
New Month =
VAR _minmonth =
MONTH (
CALCULATE (
MIN ( 'Test_Date'[Date] ),
FILTER (
'Test_Date',
'Test_Date'[Year] = EARLIER ( 'Test_Date'[Year] )
&& 'Test_Date'[WeekName] = EARLIER ( 'Test_Date'[WeekName] )
)
)
)
VAR _maxmonth =
MONTH (
CALCULATE (
MAX ( 'Test_Date'[Date] ),
FILTER (
'Test_Date',
'Test_Date'[Year] = EARLIER ( 'Test_Date'[Year] )
&& 'Test_Date'[WeekName] = EARLIER ( 'Test_Date'[WeekName] )
)
)
)
VAR _weekday =
CALCULATE (
MIN ( 'Test_Date'[Weekday] ),
FILTER (
'Test_Date',
'Test_Date'[Year] = EARLIER ( 'Test_Date'[Year] )
&& 'Test_Date'[WeekName] = EARLIER ( 'Test_Date'[WeekName] )
&& DAY ( 'Test_Date'[Date] ) = 1
)
)
VAR _mindate =
CALCULATE (
MIN ( 'Test_Date'[Date] ),
FILTER (
'Test_Date',
'Test_Date'[Year] = EARLIER ( 'Test_Date'[Year] )
&& 'Test_Date'[WeekName] = EARLIER ( 'Test_Date'[WeekName] )
)
)
VAR _maxdate =
CALCULATE (
MAX ( 'Test_Date'[Date] ),
FILTER (
'Test_Date',
'Test_Date'[Year] = EARLIER ( 'Test_Date'[Year] )
&& 'Test_Date'[WeekName] = EARLIER ( 'Test_Date'[WeekName] )
)
)
RETURN
IF (
_minmonth = _maxmonth,
'Test_Date'[MonthCaption],
IF ( _weekday < 4, FORMAT ( _maxdate, "mmm" ), FORMAT ( _mindate, "mmm" ) )
)
Saludos
gracias.... muy bien hecho medida que es exactamente lo que necesito. 😊
@Roy_tap, dos maneras de tratar en función de lo que tengo, basado en el inicio o el final de la semana
Fecha de inicio de la semana = 'Fecha'[Fecha]+-1*DÍA DE LA SEMANA('Fecha'[Fecha],2)+1
Fecha de finalización de la semana = 'Fecha'[Fecha]+ 7-1*DÍA DE LA SEMANA ('Fecha'[Fecha],2)
Mes final = eomonth([fecha],0)
Fin de mes nuevo = if([Fecha de inicio de la semana]<= eomonth([Date],-1)+1 && [Fecha de finalización de la semana] >=eomonth([date],-1),eomonth([date],-1),eomonth([date],0))
Esto extenderá el fin de mes
o
Semana del mes del cambio
Mes de inicio = STARTOMONTH('Fecha'[Fecha])
Día de la semana = DÍA DE LA SEMANA ([Fecha],2) //lunes
Inicio de la semana = [Fecha] -[WeekDay]+1 //monday
Semana del mes = QUOTIENT(DATEDIFF(Minx(FILTER('Date',[Inicio del mes]=ANTERIOR([Mes de inicio])),'Fecha'[Inicio de la semana]),[Fecha],DÍA),7)+1
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |