Forum Discussion
DAX DATEADD WEEK
Buenos días
Me gustaría crear una fórmula DAX que resuma solo las ventas de la semana pasada y una segunda fórmula que resume las ventas de la semana actual.
He creado la fórmula a continuación, pero me permite tener la cantidad total hasta 7 días antes? y no la semana pasada
CALCULATE ([Ventas TOTALes];D ATEADD (DATE[Date];-7;DAY))
Gracias de antemano.
Según su descripción, desea agregar las ventas de la semana pasada a las ventas de esta semana. La condición previa es que tenga una columna de índice continuo, que se utiliza como condición de filtrado para obtener dinámicamente las ventas totales de la semana anterior.
Por lo tanto, transformaré los datos en el editor de consultas y calcularé una columna Year_ Semana y, a continuación, agruparé por la columna Year_ Semana y agregaré la columna de índice, finalmente expandiré la tabla y quitaré columnas innecesarias.
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("Zcy7CQAgDAXAXVIbMInfWcT91/CBjQ/bK24t8exZzdVMklTZ6SEHNaYADaYCKkwVNJna33dQMI2/n/faBw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [date = _t, sales = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"date", type date}, {"sales", Int64.Type}}), #"Added Custom" = Table.AddColumn(#"Changed Type", "week", each Date.WeekOfYear([date])), #"Added Conditional Column" = Table.AddColumn(#"Added Custom", "year_week", each if [week] < 10 then Date.Year([date])*1000+[week] else Date.Year([date])*100+[week]), #"Grouped Rows" = Table.Group(#"Added Conditional Column", {"year_week"}, {{"rank", each _, type table [date=nullable date, sales=nullable number, week=number, year_week=number]}}), #"Added Index" = Table.AddIndexColumn(#"Grouped Rows", "Index", 1, 1, Int64.Type), #"Expanded rank" = Table.ExpandTableColumn(#"Added Index", "rank", {"date", "sales", "week", "year_week"}, {"rank.date", "rank.sales", "rank.week", "rank.year_week"}), #"Removed Columns" = Table.RemoveColumns(#"Expanded rank",{"year_week", "rank.week"}) in #"Removed Columns"Entonces podemos crear una medida como esta:
Measure = var current_week = MAX('Table'[Index]) return CALCULATE( SUM('Table'[rank.sales]), FILTER(ALL('Table'), 'Table'[Index]=current_week||'Table'[Index]=current_week-1))Saludos
Liang
Si este post ayuda, entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
3 Replies
- amitchandak
Super User
@Sylvine_Wyz , Por favor refiérase a mi blog y video para WOW
Power BI — Semana a semana y WTD
https://medium.com/@amitchandak.1978/power-bi-wtd-questions-time-intelligence-4-5-98c30fab69d3
https://community.powerbi.com/t5/Community-Blog/Week-Is-Not-So-Weak-WTD-Last-WTD-and-This-Week-vs-Last-Week/ba-p/1051123https://www.youtube.com/watch?v=pnAesWxYgJ8
Necesita nuevas columnas como estas en la tabla de fechas
Fecha de inicio de la semana : 'Fecha'[Fecha]+-1*WEEKDAY('Date'[Fecha],2)+1
Fecha de finalización de la semana : 'Fecha'[Fecha]+ 7-1*WEEKDAY('Date'[Fecha],2)
Rango de la semana - RANKX(all('Date'),'Date'[Week Start date],,ASC,Dense)Medidas
Esta semana: CALCULATE(sum('order'[Qty]), FILTER(ALL('Date'),'Date'[Week Rank]-max('Date'[Week Rank])
Last Week ? CALCULATE(sum('order'[Qty]), FILTER(ALL('Date'),'Date'[Week Rank]-max('Date'[Week Rank])-1))
Last year WeekTM CALCULATE(sum('order'[Qty]), FILTER(ALL('Date'),'Date'[Week Rank]-(max('Date'[Week Rank]) -52))) - AlB
Community Champion
No @Sylvine_Wyz
Tratar
Measure = VAR currentDate_ = MAX ( 'DATE'[Date] ) RETURN CALCULATE ( [TOTAL Ventes]; DATESBETWEEN ( 'DATE'[Date]; currentDate_ - 14; currentDate_ - 8 ) )Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.
Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.
Salud
- V-lianl-msft
Community Support
Según su descripción, desea agregar las ventas de la semana pasada a las ventas de esta semana. La condición previa es que tenga una columna de índice continuo, que se utiliza como condición de filtrado para obtener dinámicamente las ventas totales de la semana anterior.
Por lo tanto, transformaré los datos en el editor de consultas y calcularé una columna Year_ Semana y, a continuación, agruparé por la columna Year_ Semana y agregaré la columna de índice, finalmente expandiré la tabla y quitaré columnas innecesarias.
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("Zcy7CQAgDAXAXVIbMInfWcT91/CBjQ/bK24t8exZzdVMklTZ6SEHNaYADaYCKkwVNJna33dQMI2/n/faBw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [date = _t, sales = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"date", type date}, {"sales", Int64.Type}}), #"Added Custom" = Table.AddColumn(#"Changed Type", "week", each Date.WeekOfYear([date])), #"Added Conditional Column" = Table.AddColumn(#"Added Custom", "year_week", each if [week] < 10 then Date.Year([date])*1000+[week] else Date.Year([date])*100+[week]), #"Grouped Rows" = Table.Group(#"Added Conditional Column", {"year_week"}, {{"rank", each _, type table [date=nullable date, sales=nullable number, week=number, year_week=number]}}), #"Added Index" = Table.AddIndexColumn(#"Grouped Rows", "Index", 1, 1, Int64.Type), #"Expanded rank" = Table.ExpandTableColumn(#"Added Index", "rank", {"date", "sales", "week", "year_week"}, {"rank.date", "rank.sales", "rank.week", "rank.year_week"}), #"Removed Columns" = Table.RemoveColumns(#"Expanded rank",{"year_week", "rank.week"}) in #"Removed Columns"Entonces podemos crear una medida como esta:
Measure = var current_week = MAX('Table'[Index]) return CALCULATE( SUM('Table'[rank.sales]), FILTER(ALL('Table'), 'Table'[Index]=current_week||'Table'[Index]=current_week-1))Saludos
Liang
Si este post ayuda, entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.