Forum Discussion
DAX - calculating interpolation between datetime values
Hello All,
I would like to have blank values to be filled with interpolated values as per the dates and name column values.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("jVg7blwxDLxK4DoRxD+ZLgiQJilSBGkM3/8a4VvEi/UjtXqGXSzI0UokZzTy6+sLyJeJX3AifZrz65wvn1944o/vYDZ+/81PL2+fP2bBpSy8lEWXsvhSllzK0ktZdinLL2XFlSy4VHu4VHtoa080UJWnABRA2wbCAQAJICuAtiMEA12ExakA2ubkN0wyDjcpgLZPyGNOw/zjAmhbllsyJEefXgBt97JKk5hMIAqgbeRRVkyEkp4BeKmn2PY0S4MqSBRlH9i2F3WIehZTK+AJy3TDfpTBCCwmXADtxnMfkXOGzFIAy7kMC1CGAujnkgZD9rSm91OZ6aSiIF4A/VTSuE1AyW5H8rZ9ZeeogH4kZwJ4ekwqgHYk0YcTmBBaAbQjmQBDxThn9xqDMSxYaGqpTy83xwHQVKQeYKE8c5CEaFBpWa88SXOfIIqznLhXHrSBM/IIVA/d9xhGdszEpQL6NicfCdgI6hn6NuOQg44etay98iQgx4JTrwqgVx4cSXjI33KGXnmebGkpQgqU4ll21GvQkW8HdwALYHXF6I36/v8ItpGj4whJHE36F8CTu9E2GlSyVrsVOAqIXABPLIrt9CaLgIEUpgXwxK3YRmdSBbKyxkmkAlgNYCa7kdRmrAZQJPLn/XK1jdSUrP4GSUV1nDS93GTvQ/Hrz/ef355402UcN3HaxHkTl01cN3HbxH0Tj+dx2NQPNvWDU/2Uh0GOAFX/dqqk5pCn+VRHXJnJe6oPUASgxoKd6quRpsemp4isDOR7qkimMpNrNadWVgXPCWy+f1N/ONXfjmtmQop08dy4aQVuWoHnVszctPiUyhpsp7o6v3upbFDIjYMrz3dPjeGRyhVYzVXLtWru7rXC4wDAKOXy6GlXfdzDUkpAItUD9Qysnu1eVsv3AIajVv/rZcQNOK1p6Mqn3VNT4mhCesalSXugGAWpe6nKmayqYybHwr0ueh6WfCykhyOaxbSeiZu8MQdwtKUXu696PLaQj5OtXNgDxfLRl+tiqdWZuDbTDMrthbVyXg90A6ZsVbNXL6m5Zl52tVlnEq/M1TLeMrd6p2X8TAw43DBCWrGVSfq4VPVEy3i7leqDlvGWmNXwLOMtG6uzeRC5fMtHOFQHdm6wjZiRbKim6izSMtJ6sd//C1FtzGp/ZwqyH69lhODc39s/", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Datetime = _t, Name = _t, value = _t]),
#"Added Suffix" = Table.TransformColumns(Source, {{"Datetime", each _ & ":00", type text}}),
#"Changed Type with Locale" = Table.TransformColumnTypes(#"Added Suffix", {{"Datetime", type datetime}}, "en-NA"),
#"Changed Type" = Table.TransformColumnTypes(#"Changed Type with Locale",{{"value", type number}})
in
#"Changed Type"
I have a column which has tag names and here i have sample data of two tags for two days.
The columns i have here as Datetime, NAME and value columns.
for each name i want to fill the blank values using interpolation.
I have tried these below blogs and measures
https://community.powerbi.com/t5/Community-Blog/Linear-Interpolation-with-Power-BI/ba-p/341202
Written dax as below. but somehow its not working.
Interpolated Value =
VAR x3 = CALCULATE(MAX(Trends2[Datetime]),ALLEXCEPT(Trends2,Trends2[Name]))
VAR match = CALCULATE(MAX(Trends2[value]),FILTER(ALLEXCEPT(Trends2,Trends2[Name]),Trends2[Datetime]=x3))
VAR x1 = CALCULATE(MAX(Trends2[Datetime]),FILTER(ALLEXCEPT(Trends2,Trends2[Name]),Trends2[Datetime]<=x3))
VAR x2 = CALCULATE(MIN(Trends2[Datetime]),FILTER(ALLEXCEPT(Trends2,Trends2[Name]),Trends2[Datetime]>=x3))
VAR y1 = CALCULATE(MAX(Trends2[value]),FILTER(ALLEXCEPT(Trends2,Trends2[Name]),Trends2[Datetime]<=x3))
VAR y2 = CALCULATE(MIN(Trends2[value]),FILTER(ALLEXCEPT(Trends2,Trends2[Name]),Trends2[Datetime]>=x3))
RETURN IF(NOT(ISBLANK(match)),match,y1 + (x3 - x1) * (y2 - y1)/(x2 - x1))
Can anyone please help me with the right dax to calcualte the interpolation as per my data.
Thanks,
Mohan V.
3 Replies
- AnonymousNot applicable
- AnonymousNot applicable
Please help.
- v-zhangtiCommunity Support
Hi, Anonymous
You can try the following methods.
Interpolated Value = VAR x3 = CALCULATE(MAX(Trends2[Datetime]),ALLEXCEPT(Trends2,Trends2[Name])) VAR match = CALCULATE(MAX(Trends2[value]),FILTER(Trends2,Trends2[Datetime]=x3&&[Name]=SELECTEDVALUE(Trends2[Name]))) VAR x1 = CALCULATE(MAX(Trends2[Datetime]),FILTER(Trends2,Trends2[Datetime]<=x3&&[Name]=SELECTEDVALUE(Trends2[Name]))) VAR x2 = CALCULATE(MIN(Trends2[Datetime]),FILTER(Trends2,Trends2[Datetime]>=x3&&[Name]=SELECTEDVALUE(Trends2[Name]))) VAR y1 = CALCULATE(MAX(Trends2[value]),FILTER(Trends2,Trends2[Datetime]<=x3&&[Name]=SELECTEDVALUE(Trends2[Name]))) VAR y2 = CALCULATE(MIN(Trends2[value]),FILTER(Trends2,Trends2[Datetime]>=x3&&[Name]=SELECTEDVALUE(Trends2[Name]))) RETURN IF(match<>BLANK(),match,y1 + (x3 - x1) * (y2 - y1)/(x2 - x1))If that doesn't solve your problem, what is your expected output?
Best Regards,
Community Support Team _Charlotte
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.