gpt4 book ai didi

sql - 如何聚合维度变化缓慢的数据

转载 作者:行者123 更新时间:2023-12-04 08:51:00 24 4
gpt4 key购买 nike

我会尝试用荒谬的英语水平和很难解释的情况来解释我的问题。
在 Teradata 上,我有一个 SCD2 变化(缓慢变化的维度)的第一个表 table1,所以每条记录都有一个开始和结束日期。
Dataset
我想用除 table1 中的一列(无用)之外的所有列创建新表(table2)。很明显,没有这一列,我有重复的行,所以我按所有其他列分组,并计算 min(startdate) 和 max(enddate) 以重新创建历史记录。所以我想要这样的结果:
Expected results
但我能返回的唯一结果是这样的:

select Key, UsefulData, min(EtartDate), max(EndDate)
from table1
group by Key, UsefulData
Actual results
有了这样的结果,如果我想分析1月30日的情况,返回了2行(UsefulData = 1 and = 0),但事实是UsefulData = 1。
请问如何从数据集表 1 创建我的表 2?
精度:NextRow 的 StartDate 总是当前行的 EndDate+1。

最佳答案

Teradata 支持 syntax做你想做的事,但它只适用于句点。幸运的是,您可以使用 period(StartDate, EndDate+1) 将 StartDate 和 EndDate 组合成一个 Period (标准 SQL 中包括开始,但不包括结束):

select NORMALIZE Key, UsefulData, period(StartDate, EndDate+1) as pd
from table1
如果要将其拆分回两个单独的列:
select Key, UsefulData, 
begin(pd) as StartDate,
last(pd) as EndDate -- reverts the +1
from
(
select NORMALIZE Key, UsefulData, period(StartDate, EndDate) as pd
from table1
) as dt
还有一个 normalized table ,但同样,仅适用于句点。

关于sql - 如何聚合维度变化缓慢的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64106265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com