【发布时间】:2023-01-12 07:04:42
【问题描述】:
我有一个查询,我试图将其保存到一个表中,供拥有 2.4 亿行的用户使用,并希望在数据上包含一个滚动的三年测试版。 自连接的原始查询将是:
SELECT
ibm.trading_item_id,
ibm.primary_exchange_ticker,
ibm.date,
REGR_SLOPE(
ibm_lagging.USD_PRICE_CLOSE_1D_RT,
ibm_lagging.SPX_1D_RT
) AS spx_beta_3y
FROM
ibm
LEFT JOIN ibm ibm_lagging ON ibm.trading_item_id = ibm_lagging.trading_item_id
AND ibm.date >= ibm_lagging.date
AND dateadd(year, -3, ibm.date) <= ibm_lagging.date
GROUP BY
ibm.trading_item_id,
ibm.primary_exchange_ticker,
ibm.date
HAVING
count(*) >= 3 * 250 -- sufficient # of trading days in a year to make this reasonable
ORDER BY
问题是因为这是带有自连接的基本查询中的 2.4 亿行,我正在查看大约 750*2.4 亿行,这些行无法运行。因此,我想使用 Windows 框架,但出于某种原因,在使用分区依据时,regr_slope 函数无法满足这一要求。我想我有一个手动解决方法,但我的问题是为什么这不会得到满足。我担心通过手动操作我的假设有误。
【问题讨论】:
标签: snowflake-cloud-data-platform