错误类
该指数< indexValue >
出界。数组有< arraySize >
元素。使用try_element_at
允许访问无效索引的元素并返回NULL。必要时设置< ansiConfig >
以“false”绕过此错误。
解释
indexValue
元素的定义数组元素的边界之外element_at (arrayExpr indexValue),或英语教学(arrayExpr indexValue)表达式。
取值必须为between-arraySize
而且arraySize
(不包括0
.
缓解
此错误的缓解取决于原因:
数组的基数比预期的小吗?
修复输入数组并重新运行查询。
有
indexValue
计算错误?调整
indexValue
并重新运行查询。你希望得到a吗
零
为索引基数之外的元素返回的值?如果可以更改表达式,请使用try_element_at (arrayExpr indexValue)允许引用越界。
如果不能更改表达式,作为最后的手段,请临时设置
ansiConfig
来假
允许引用越界。
例子
——INVALID_ARRAY_INDEX_IN_ELEMENT_AT错误,因为索引不匹配>选择element_at(数组(“一个”,“b”,“c”),指数)从值(1),(4)作为T(指数);[INVALID_ARRAY_INDEX_IN_ELEMENT_AT]的指数4是出的界限.的数组有3.元素.如果必要的集“ANSI_MODE”来假来绕过这错误.——增加数组大小以覆盖索引>选择element_at(数组(“一个”,“b”,“c”,' d '),指数)从值(1),(4)作为T(指数);一个d——调整索引以匹配数组>选择element_at(数组(“一个”,“b”,“c”),指数)从值(1),(3.)作为T(指数);一个c—允许超出绑定的数组索引,调整为基于1的索引>选择try_element_at(数组(“一个”,“b”,“c”),指数)从值(1),(4)作为T(指数);一个零——通过在Databricks SQL中设置ansiConfig来容忍越界>集ANSI_MODE=假;>选择element_at(数组(“一个”,“b”,“c”),指数)从值(1),(4)作为T(指数);一个零>集ANSI_MODE=真正的;——通过在Databricks Runtime中设置ansiConfig来容忍超出边界>集火花.sql.ansi.启用=假;>选择element_at(数组(“一个”,“b”,“c”),指数)从值(1),(4)作为T(指数);一个零>集火花.sql.ansi.启用=真正的;