2

我在通过 Dremio 公开的镶木地板文件中有许多行,例如:

ID 数据
1 [1.5,8.5,23.004]
2 [0.3,4.44, 2.59]

我想要实现的是一个查询,它将展平数组但给我一个明确的索引,这样我就知道哪一行与数组中的哪个元素有关。我需要这个的原因是因为我有另一个等效表,其中“数据”值表示需要查询并应用于原始数据的调整值。

我正在寻找的是这样的结果:

ID 数据元素 编号
1 1.5 0
1 8.5 1
1 23.004 2
2 0.3 0
2 4.44 1
2 2.59 2

看起来这需要某种窗口函数,如 ROW_NUMBER() OVER(...) 但虽然窗口函数在 Dremio 中可用,但我无法让它工作。

有谁知道:a)在展平时可以引用数组元素的索引吗?b) 使用 flatten 时返回的顺序总是保证与原始数组中的顺序相同?

如果 b) 为真,那么我真的不需要担心 a)。

4

1 回答 1

1

一个)。

您可能需要在数据中包含索引,可能是通过嵌套数组。例如,如果原始数据被[ [0, 1.5] , [1, 8.5] , [2, 23.004] ]展平,将返回三行,每个数据都包含一个数组,该数组的第一个元素是索引,第二个元素是您实际想要的数据值。


乙)。

SQL 数据集没有隐含的顺序,而是明确无序的。排序的属性只存在于创建可以从中派生排序的列之后。

于 2021-04-15T13:25:52.783 回答