Don't miss your chance to take the Fabric Data Engineer (DP-700) exam on us!
Learn moreWe've captured the moments from FabCon & SQLCon that everyone is talking about, and we are bringing them to the community, live and on-demand. Starts on April 14th. Register now
| Date |
| 01-01-2025 |
| 02-01-2025 |
| 04-01-2025 |
| 05-01-2025 |
| 07-01-2025 |
| 08-01-2025 |
| 09-01-2025 |
| 10-01-2025 |
| 15-01-2025 |
| 17-01-2025 |
| 20-01-2025 |
| 22-01-2025 |
| 30-01-2025 |
| 01-02-2025 |
| 02-02-2025 |
| 03-02-2025 |
| 05-02-2025 |
| 07-02-2025 |
| 08-02-2025 |
| 09-02-2025 |
| 10-02-2025 |
| 15-02-2025 |
| 18-02-2025 |
| 20-02-2025 |
| 22-02-2025 |
| 27-02-2025 |
This is my data where there is one column of Date.
I want below result:
| Date | Day_Range |
| 01-01-2025 | 1-10 |
| 02-01-2025 | 1-10 |
| 04-01-2025 | 1-10 |
| 05-01-2025 | 1-10 |
| 07-01-2025 | 1-10 |
| 08-01-2025 | 1-10 |
| 09-01-2025 | 1-10 |
| 10-01-2025 | 1-10 |
| 15-01-2025 | 11-20 |
| 17-01-2025 | 11-20 |
| 20-01-2025 | 11-20 |
| 22-01-2025 | 21-31 |
| 30-01-2025 | 21-31 |
| 01-02-2025 | 1-10 |
| 02-02-2025 | 1-10 |
| 03-02-2025 | 1-10 |
| 05-02-2025 | 1-10 |
| 07-02-2025 | 1-10 |
| 08-02-2025 | 1-10 |
| 09-02-2025 | 1-10 |
| 10-02-2025 | 1-10 |
| 15-02-2025 | 11-20 |
| 18-02-2025 | 11-20 |
| 20-02-2025 | 11-20 |
| 22-02-2025 | 21-28 |
| 27-02-2025 | 21-28 |
Here I want 10 days gap.
For example from date 1 to 10 I want 1-10, for 11 to 20==>11-20 and from 21 to 30 ==> 21-30.
But problem is that I want if there is month of 28 days then want 21-28 and if there is month of 31 days then I want 21-31.
So please suggest me how I can solve this?
Solved! Go to Solution.
Hey man, @danextian ,
you forgot about leap year:
You can do this instead:
Date Range =
VAR _DayOfMonth =
DAY ( 'Table'[Column1] )
VAR _DaysInMonth =
DAY ( EOMONTH ( 'Table'[Column1], 0 ) )
RETURN
SWITCH (
TRUE (),
_DayOfMonth <= 10, "1-10",
_DayOfMonth <= 20, "11-20",
"21-"&_DaysInMonth
)
Hi @MHTANK ,
You can create the Day_Range column in DAX using a calculated column formula. The formula first extracts the day from the date using DAY('Table'[Date]). Then, it determines the last day of the month using EOMONTH('Table'[Date], 0). The SWITCH(TRUE(), ...) function is used to assign the appropriate range: values between 1 and 10 are labeled "1-10," values between 11 and 20 are labeled "11-20," and values from 21 onward are dynamically assigned using "21-" & FORMAT(MonthEnd, "0"), ensuring that the last day of each month is correctly considered, whether it's 28, 30, or 31 days.
Day_Range =
VAR DayNum = DAY('Table'[Date])
VAR MonthEnd = DAY( EOMONTH('Table'[Date], 0) )
RETURN
SWITCH(
TRUE(),
DayNum <= 10, "1-10",
DayNum <= 20, "11-20",
"21-" & FORMAT(MonthEnd, "0")
)
Replace 'Table' with the actual name of your table in Power BI. This formula ensures that the correct 10-day grouping is applied while dynamically adjusting for different month lengths.
Best regards,
Hi,
Try this calculated column formula
Column = if(DAY(Data[Date])<=10,"1-10",if(day(Data[Date])<=20,"11-20","21-"&day(EOMONTH(Data[Date],0))))
Hope this helps.
@MHTANK I am not exactly sure what you mean, but you can do in Power Querry:
Add Column and then copy just this part:
let
daysInMonth = Date.DaysInMonth([Date]),
currentDay = Date.Day([Date]),
createText =
if currentDay <= 10 then "1-10"
else if currentDay <= 20 then "11-20"
else "21-"&Text.From(daysInMonth)
in
createText
Thanks to all 👍
Hi,
Try this calculated column formula
Column = if(DAY(Data[Date])<=10,"1-10",if(day(Data[Date])<=20,"11-20","21-"&day(EOMONTH(Data[Date],0))))
Hope this helps.
Your solution is also true and shortly very well 👍
Hi @MHTANK ,
You can create the Day_Range column in DAX using a calculated column formula. The formula first extracts the day from the date using DAY('Table'[Date]). Then, it determines the last day of the month using EOMONTH('Table'[Date], 0). The SWITCH(TRUE(), ...) function is used to assign the appropriate range: values between 1 and 10 are labeled "1-10," values between 11 and 20 are labeled "11-20," and values from 21 onward are dynamically assigned using "21-" & FORMAT(MonthEnd, "0"), ensuring that the last day of each month is correctly considered, whether it's 28, 30, or 31 days.
Day_Range =
VAR DayNum = DAY('Table'[Date])
VAR MonthEnd = DAY( EOMONTH('Table'[Date], 0) )
RETURN
SWITCH(
TRUE(),
DayNum <= 10, "1-10",
DayNum <= 20, "11-20",
"21-" & FORMAT(MonthEnd, "0")
)
Replace 'Table' with the actual name of your table in Power BI. This formula ensures that the correct 10-day grouping is applied while dynamically adjusting for different month lengths.
Best regards,
Hey, @MHTANK ,
In Power Query / M language, you can do this:
static but clean:
addRange2= Table.AddColumn(addRange, "range2", each
let
daysInMonth = Date.DaysInMonth([Date]),
currentDay = Date.Day([Date]),
createText =
if currentDay <= 10 then "1-10"
else if currentDay <= 20 then "11-20"
else "21-"&Text.From(daysInMonth)
in
createText, type text)
or more dynamic
// replace changeType to your PreviousStep
addRange= Table.AddColumn(changeType, "range", each
let
daysInMonth = Date.DaysInMonth([Date]),
currentDay = Date.Day([Date]),
split = List.Split({1..daysInMonth}, 10),
removeLast = List.Select(split, each not List.Contains(_, 31)),
if31AddBack = if daysInMonth = 31 then List.Transform( removeLast, each if List.Contains(_, 30) then _ & {31} else _) else removeLast,
pickList = List.Select(if31AddBack, each List.Contains(_, currentDay)),
combineIt = List.Combine(pickList),
createText = Text.From(List.First(combineIt)) & "-" & Text.From(List.Last(combineIt))
in
createText, type text)
By this I am getting tables.
@MHTANK I am not exactly sure what you mean, but you can do in Power Querry:
Add Column and then copy just this part:
let
daysInMonth = Date.DaysInMonth([Date]),
currentDay = Date.Day([Date]),
createText =
if currentDay <= 10 then "1-10"
else if currentDay <= 20 then "11-20"
else "21-"&Text.From(daysInMonth)
in
createText
Yes This is also accepted 👍
Hi @MHTANK
Please try this calculated column:
Date Range =
VAR _DayOfMonth =
DAY ( Data[Date] )
VAR _DaysInMonth =
DAY ( EOMONTH ( Data[Date], 0 ) )
RETURN
SWITCH (
TRUE (),
_DayOfMonth <= 10, "1-10",
_DayOfMonth <= 20, "11-20",
IF ( _DaysInMonth >= 29, "21-31", "21-28" )
)
Hey man, @danextian ,
you forgot about leap year:
You can do this instead:
Date Range =
VAR _DayOfMonth =
DAY ( 'Table'[Column1] )
VAR _DaysInMonth =
DAY ( EOMONTH ( 'Table'[Column1], 0 ) )
RETURN
SWITCH (
TRUE (),
_DayOfMonth <= 10, "1-10",
_DayOfMonth <= 20, "11-20",
"21-"&_DaysInMonth
)
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.
Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.
| User | Count |
|---|---|
| 55 | |
| 34 | |
| 32 | |
| 19 | |
| 17 |
| User | Count |
|---|---|
| 75 | |
| 72 | |
| 38 | |
| 35 | |
| 25 |