【发布时间】:2022-06-15 05:01:44
【问题描述】:
我的输入数据(时间戳)分布不均匀的频率。我希望使用插值来使 x 轴均匀。
到目前为止,我在 Snowflake 文档中找不到任何内容。
【问题讨论】:
-
我研究过各种方法,并看到其他人在这些方面的工作。该方法可能会根据要求的细节而有所不同。您能否提供最少的数据样本和预期输出?
标签: snowflake-cloud-data-platform interpolation
我的输入数据(时间戳)分布不均匀的频率。我希望使用插值来使 x 轴均匀。
到目前为止,我在 Snowflake 文档中找不到任何内容。
【问题讨论】:
标签: snowflake-cloud-data-platform interpolation
这是一种方法 -
低于日期 CTE 的日期不一致。
想法是—— 我们从数据集中得到最小日期和最大日期。 接下来,我们找到最大和最小日期之间的天数。 接下来,我们计算从最小日期开始添加多少天以生成日期的插值数据集。 对于表格生成器,我们必须给出一个常数,因此我们使用一个很大的数字并使用限定来停止所需的日期数。
with date_cte(dates) as
(select * from values
('2022-01-12'::date),
('2022-02-12'::date),
('2022-02-19'::date),
('2022-03-11'::date),
('2022-04-10'::date),
('2022-04-12'::date),
('2022-05-02'::date),
('2022-06-14'::date),
('2022-06-28'::date)
), agg_cte as (
select dates,
max(dates) over (order by null) mx ,
min(dates) over (order by null) mn,
count(*) over (order by null) cnt,
datediff(day,mn,mx) days_btwn, days_btwn/(cnt-1) days_incr
from date_cte)
select a.dates,
a.mn,
a.mx,
a.days_btwn,
a.days_incr
,row_number() over(order by seq4()) rn,
dateadd(day,a.days_incr * (rn-1), a.mn) interpolated_dates
from agg_cte a,table(generator(rowcount=>10000))
qualify row_number() over (order by null)<=cnt
order by interpolated_dates asc;
将产生以下数据集(参考 INTERPOLATED_DATES 列)-
| DATES | MN | MX | DAYS_BTWN | DAYS_INCR | RN | INTERPOLATED_DATES |
|---|---|---|---|---|---|---|
| 2022-01-12 | 2022-01-12 | 2022-06-28 | 167 | 20.875000 | 1 | 2022-01-12 |
| 2022-02-12 | 2022-01-12 | 2022-06-28 | 167 | 20.875000 | 2 | 2022-02-02 |
| 2022-02-19 | 2022-01-12 | 2022-06-28 | 167 | 20.875000 | 3 | 2022-02-23 |
| 2022-03-11 | 2022-01-12 | 2022-06-28 | 167 | 20.875000 | 4 | 2022-03-16 |
| 2022-04-10 | 2022-01-12 | 2022-06-28 | 167 | 20.875000 | 5 | 2022-04-06 |
| 2022-04-12 | 2022-01-12 | 2022-06-28 | 167 | 20.875000 | 6 | 2022-04-26 |
| 2022-05-02 | 2022-01-12 | 2022-06-28 | 167 | 20.875000 | 7 | 2022-05-17 |
| 2022-06-14 | 2022-01-12 | 2022-06-28 | 167 | 20.875000 | 8 | 2022-06-07 |
| 2022-06-28 | 2022-01-12 | 2022-06-28 | 167 | 20.875000 | 9 | 2022-06-28 |
【讨论】: