在 Dremio 查询中使用 FLATTEN 时,有没有办法包含元素索引?

问题描述

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

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

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

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

id data_element idx
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).

解决方法

A).

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


B).

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...