【问题标题】:Set Column to iterate over set of numbers in SnowFlake设置列以迭代雪花中的一组数字
【发布时间】:2022-01-10 04:01:00
【问题描述】:

我花了几天时间试图解决这个问题。我想在我的雪花表中有一列迭代一组数字。我可以使用以下代码在 Oracle SQL 中轻松完成此操作:

alter table <table_name> add col_name numeric(10)
update <table_name> set col_name = mod(rownum,4)

结果是
第 1 行 col_name = 1
第 2 行 col_name = 2
第 3 行 col_name = 3
第 4 行 col_name = 4
第 5 行 col_name = 1
第 6 行 col_name = 2
第 7 行 col_name = 3
....

我知道雪花不存在rownum。我知道 row_number() over (order by..) 在更新语句中不起作用。我不能使用 NORMAL 或 UNIFORM 或 SEQ。 我最接近的是 col_name = uniform(1, 4, random()) 但这是随机的。我需要订购它。
干杯!

【问题讨论】:

标签: sql snowflake-cloud-data-platform


【解决方案1】:

编写您想要的 select 语句,然后用 SELECT 替换表,因为这是 UPDATE 所做的 100%,作为奖励,您可以按您想要的方式排序,以便表具有良好的性能。

CREATE OR REPLEACE TABLE foo AS 
SELECT
   a,
   b,
   c,
   ROW_NUMBER() OVER (ORDER BY SEQ4()) % 4 AS col_name
FROM foo
ORDER BY your, clustering, keys

【讨论】:

  • t1 和 t2 代表什么?
  • 你可能想要分区的东西,我正在写一个通用的 SQL,我会放弃它来看看你的情况可能想要的更多。
  • 您还想使用 COPY GRANTS 和 org 表的其他生命周期值。 docs.snowflake.com/en/sql-reference/sql/…
猜你喜欢
  • 1970-01-01
  • 2023-02-13
  • 1970-01-01
  • 2021-08-10
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 1970-01-01
  • 2021-12-18
相关资源
最近更新 更多