Forum Discussion
Days computation
Hi mussaenda ,
You could try the following steps,let first output:
You could use the following measures:
end =
VAR end1 =
CALCULATE (
MAX ( 'Table'[LOADING DATE] ),
FILTER ( ALL ( 'Table' ), 'Table'[MATERIAL] = MAX ( 'Table'[MATERIAL] ) )
)
VAR end2 =
IF ( end1 <> BLANK (), end1, TODAY () )
VAR test1 =
DATEDIFF ( MAX ( 'Table'[OFFLOADING DATE] ), end2, DAY )
RETURN
test1
Then the secend output:
You could try the following steps:
Step1, create start_dt and end_dt,base on base table :
start_dt = FORMAT(MAX('Table'[OFFLOADING DATE]),"YYYY/MM/DD")end_DATE1 =
VAR end1 =
CALCULATE (
MAX ( 'Table'[LOADING DATE] ),
FILTER ( ALL ( 'Table' ), 'Table'[MATERIAL] = MAX ( 'Table'[MATERIAL] ) )
)
VAR end2 =
IF ( end1 <> BLANK (), end1, TODAY () )
RETURN
end2
then get just as following:
And then use the following measures:
January:
onemon =
VAR test1 =
IF (
'Table'[start_dt] >= FORMAT ( "2021/01/01", "YYYY/MM/DD" )
&& 'Table'[start_dt] <= FORMAT ( "2021/01/31", "YYYY/MM/DD" )
&& 'Table'[start_dt] <> BLANK (),
IF (
FORMAT ( [end_DATE1], "YYYY/MM/DD" ) <= FORMAT ( "2021/01/31", "YYYY/MM/DD" ),
DATEDIFF ( MAX ( 'Table'[OFFLOADING DATE] ), [end_DATE1], DAY ) + 1,
DATEDIFF ( MAX ( 'Table'[OFFLOADING DATE] ), "2021/1/31", DAY ) + 1
),
IF (
'Table'[start_dt] <= FORMAT ( "2021/01/01", "YYYY/MM/DD" )
&& 'Table'[start_dt] <> BLANK (),
IF (
FORMAT ( [end_DATE1], "YYYY/MM/DD" ) <= FORMAT ( "2021/01/31", "YYYY/MM/DD" ),
DATEDIFF ( "2021/01/01", [end_DATE1], DAY ) + 1,
DATEDIFF ( "2021/01/01", "2021/1/31", DAY ) + 1
),
0
)
)
RETURN
test1Jan = IF(HASONEVALUE('Table'[MATERIAL]),[onemon], SUMX(ALL('Table'),'Table'[onemon]))
February:
twomon =
VAR test1 =
IF (
'Table'[start_dt] >= FORMAT ( "2021/02/01", "YYYY/MM/DD" )
&& 'Table'[start_dt] <= FORMAT ( "2021/02/28", "YYYY/MM/DD" )
&& 'Table'[start_dt] <> BLANK (),
IF (
FORMAT ( [end_DATE1], "YYYY/MM/DD" ) <= FORMAT ( "2021/02/28", "YYYY/MM/DD" ),
DATEDIFF ( MAX ( 'Table'[OFFLOADING DATE] ), [end_DATE1], DAY ) + 1,
DATEDIFF ( MAX ( 'Table'[OFFLOADING DATE] ), "2021/02/28", DAY ) + 1
),
IF (
'Table'[start_dt] <= FORMAT ( "2021/02/01", "YYYY/MM/DD" )
&& 'Table'[start_dt] <> BLANK (),
IF (
FORMAT ( [end_DATE1], "YYYY/MM/DD" ) <= FORMAT ( "2021/02/28", "YYYY/MM/DD" ),
DATEDIFF ( "2021/02/01", [end_DATE1], DAY ) + 1,
DATEDIFF ( "2021/02/01", "2021/02/28", DAY ) + 1
),
0
)
)
RETURN
test1Feb = IF(HASONEVALUE('Table'[MATERIAL]),[twomon], SUMX(ALL('Table'),'Table'[twomon]))
March :
threemon =
VAR test1 =
IF (
'Table'[start_dt]>= FORMAT("2021/03/01","YYYY/MM/DD")
&&'Table'[start_dt]<= FORMAT("2021/03/31","YYYY/MM/DD")
&& 'Table'[start_dt] <> BLANK (),
IF (
FORMAT([end_DATE1],"YYYY/MM/DD") <=FORMAT("2021/03/31","YYYY/MM/DD"),
DATEDIFF ( MAX ( 'Table'[OFFLOADING DATE] ), [end_DATE1], DAY )+1,
DATEDIFF ( MAX ( 'Table'[OFFLOADING DATE] ), "2021/03/31", DAY )+1
),
IF('Table'[start_dt]<=FORMAT("2021/03/01","YYYY/MM/DD") && 'Table'[start_dt] <> BLANK (),IF (
FORMAT([end_DATE1],"YYYY/MM/DD") <=FORMAT("2021/03/31","YYYY/MM/DD"),
DATEDIFF ("2021/03/01", [end_DATE1], DAY )+1,
DATEDIFF ( "2021/03/01", "2021/03/31", DAY )+1
),0)
)
RETURN
test1Mar = IF(HASONEVALUE('Table'[MATERIAL]),[threemon], SUMX(ALL('Table'),'Table'[threemon]))
April :
formonth =
VAR test1 =
IF (
'Table'[start_dt]>= FORMAT("2021/04/01","YYYY/MM/DD")
&&'Table'[start_dt]<= FORMAT("2021/04/30","YYYY/MM/DD")
&& 'Table'[start_dt] <> BLANK (),
IF (
FORMAT([end_DATE1],"YYYY/MM/DD") <=FORMAT("2021/04/30","YYYY/MM/DD"),
DATEDIFF ( MAX ( 'Table'[OFFLOADING DATE] ), [end_DATE1], DAY )+1,
DATEDIFF ( MAX ( 'Table'[OFFLOADING DATE] ), "2021/04/30", DAY )+1
),
IF('Table'[start_dt]<=FORMAT("2021/04/01","YYYY/MM/DD") && 'Table'[start_dt] <> BLANK (),IF (
FORMAT([end_DATE1],"YYYY/MM/DD") <=FORMAT("2021/04/30","YYYY/MM/DD"),if(FORMAT([end_DATE1],"YYYY/MM/DD") <FORMAT("2021/04/01","YYYY/MM/DD"),0,
DATEDIFF ("2021/04/01", [end_DATE1], DAY )+1),
DATEDIFF ( "2021/04/01", "2021/04/30", DAY )+1
), 0)
)
RETURN
test1Apr = IF(HASONEVALUE('Table'[MATERIAL]),[formonth], SUMX(ALL('Table'),'Table'[formonth]))
Click follow to download pbix file if you need!
Wish it is helpful for you!
Best Regards
Lucien
- mussaenda5 years ago
Community Champion
Hi v-luwang-msft ,
Thank you so much for your solution!
But..
Your solution is static. Sorry I did not elaborate.
Because we all have the month of the year, and for the next year..
Not only for these three particular months.
I provided these months as sample data.
But thank you so much!
For now, I have achieved my requirement by doing the date series/range for each material.
It will not be a good query for a long run because it will load lots of data.