我打算在列中的值之间进行插值(线性插值),并使用SQL查询将其插入新列。根据我在网上的搜索,我怀疑铅分析功能可能是有用的。我是SQL查询的新手。因此,任何关于如何实现这一目标的见解都将非常有帮助。
样本数据集如下所述:
Emp Test_date Value
--- --------- -----
A 1/1/2001 null
A 1/2/2001 100
A 1/3/2001 null
A 1/4/2001 80
A 1/5/2001 null
A 1/6/2001 null
A 1/7/2001 75
我们的想法是获得第四列,其值为:
null
100
interpolatedValue1
80
interpolatedValue2
interpolatedValue3
75
- Interpolatedvalue 1 * 将是100和80之间的内插值,
- Interpolatedvalue 2 * 将是80和75之间的线性插值。
- InterpolatedValue 3 * 将是InterpolatedValue 2和75之间的线性插值
以下是简单的线性插值的工作原理:
给定两个点(V1atD1),(V3atD3)。* * D2处的值V2**是多少?
(V3-V1)/(D3-D1)*(D2-D1)+ V1
3条答案
按热度按时间w1e3prcc1#
这可能会被简化一点,但得到你想要的答案,我相信。稍微有点棘手的是获得非空值之间的天数(即你正在填充差距的大小),然后是在该间隙内的位置:
我使用了
last_value
和first_value
,而不是lead
和lag
,但这两种方法都可以工作。(我想,在大数据集上,超前/滞后可能会更快)。grp
的计算是Tabibitosan。50pmv0ei2#
可以使用
lag(ignore nulls)
。您不指定如何进行插值,但线性插值将是:u4vypkhs3#
下面是使用ASC插值对SQLImpala进行修复