Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more
i am using two columns yearmonth and value in table visual as shown below, i need third column "expected_output" in same table as highlighted below , this third column should pick up the first non zero value (example 0.05, 0.02 etc) of current row and populate that same value and all previous rows including the current row
Solved! Go to Solution.
This dax code should work
expected_output =
VAR temp =
TOPN (
1,
FILTER (
Sheet1,
Sheet1[yearmonth] >= EARLIER ( Sheet1[yearmonth] ) &&
Sheet1[value] <> 0
),
Sheet1[yearmonth], ASC
)
VAR result =
MINX ( temp, Sheet1[value] )
RETURN
result
Can you do this on power query side ? then it should be much easier than dax
use this M code steps
let
Source = Csv.Document(File.Contents("C:\XXXX\data.csv"),[Delimiter=",", Columns=2, Encoding=65001, QuoteStyle=QuoteStyle.None]),
#"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"yearmonth", Int64.Type}, {"value", type number}}),
#"Sorted Rows" = Table.Sort(#"Changed Type",{{"yearmonth", Order.Descending}}),
AddedIndex= Table.AddIndexColumn(#"Sorted Rows", "Index", 1, 1, Int64.Type),
// Create a temporary column with 0/null replaced with null, others kept
AddedTemp = Table.AddColumn(AddedIndex, "TempValue", each if [value] <> null and [value] <> 0 then [value] else null),
// Fill down the cleaned column
FilledDown = Table.FillDown(AddedTemp, {"TempValue"}),
// Rename filled column
Renamed = Table.RenameColumns(FilledDown, {{"TempValue", "FilledValue"}}),
#"Sorted Rows1" = Table.Sort(Renamed,{{"yearmonth", Order.Ascending}})
in
#"Sorted Rows1"
This dax code should work
expected_output =
VAR temp =
TOPN (
1,
FILTER (
Sheet1,
Sheet1[yearmonth] >= EARLIER ( Sheet1[yearmonth] ) &&
Sheet1[value] <> 0
),
Sheet1[yearmonth], ASC
)
VAR result =
MINX ( temp, Sheet1[value] )
RETURN
result
Hello @powerbiexpert22 ,
You can use this formula in your new calculated column:
Expected_Output =
VAR CurrentYM = [YearMonth]
VAR NonZeroTable =
FILTER (
ALL ( 'YourTable' ),
'YourTable'[YearMonth] <= CurrentYM && 'YourTable'[Value] <> 0
)
VAR FirstNonZero =
CALCULATE (
MIN ( 'YourTable'[YearMonth] ),
NonZeroTable
)
RETURN
CALCULATE (
MAX ( 'YourTable'[Value] ),
FILTER ( ALL ( 'YourTable' ), 'YourTable'[YearMonth] = FirstNonZero )
)
If this solved your issue, please mark it as the accepted solution. ✅
Hi @anilelmastasi ,
it is returning same value 0.05 in all rows , please see below file
https://drive.google.com/file/d/1BUukgLhD1-p6B5rRE5Gro3sPhq91wW86/view?usp=drive_link
The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!
| User | Count |
|---|---|
| 39 | |
| 37 | |
| 33 | |
| 32 | |
| 29 |
| User | Count |
|---|---|
| 132 | |
| 88 | |
| 82 | |
| 68 | |
| 64 |