[ https://issues.apache.org/jira/browse/FLINK-32260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17738140#comment-17738140 ]
Hanyu Zheng commented on FLINK-32260: ------------------------------------- I am currently attempting to adjust an array slice function to switch from a 0-based index to a 1-based index . However, I have encountered some issues related to this change, specifically with regards to handling the start_offset and end_offset: In the context of a 1-based index, if we have a query like array_slice[0, 2], what would be the expected output? Since 0 is not a valid index in a 1-based system, how should we handle this start_offset or end_offset when it is set to 0? If we have a query like array_slice[1, 0], how should this be interpreted? According to the Google Cloud array_slice definition, the function should return an empty array if the position of the start_offset in the array is after the position of the end_offset. But in this case, since we are using a 1-based index, should we consider these positions to be the same and return [1], or should we consider end_offset of 0 to be invalid and return an empty array? [~Sergey Nuyanzin] [~twalthr] > Add ARRAY_SLICE support in SQL & Table API > ------------------------------------------ > > Key: FLINK-32260 > URL: https://issues.apache.org/jira/browse/FLINK-32260 > Project: Flink > Issue Type: Improvement > Components: Table SQL / Planner > Affects Versions: 1.18.0 > Reporter: Bonnie Varghese > Assignee: Hanyu Zheng > Priority: Major > Labels: pull-request-available > Fix For: 1.18.0 > > > Implement the {{array_slice}} function to extract a subset of elements from > an array. > Description: The {{array_slice}} function in the ETL pipeline allows you to > extract a subset of elements from an array based on the specified starting > index and length. It supports both positive and negative indices, where > positive indices start from 1 (the first element) and negative indices start > from the end of the array (-1 being the last element). > Syntax: > > code > {code:java} > array_slice[x: array, start: int, length: int] -> array{code} > {{ }} > Arguments: > * {{{}x{}}}: The input array from which to extract the subset of elements. > * {{{}start{}}}: The starting index of the subset. If positive, it > represents the index from the beginning of the array. If negative, it > represents the index from the end of the array (-1 being the last element). > * {{{}length{}}}: The length of the subset to be extracted. > Returns: An array containing the subset of elements extracted from the input > array {{{}x{}}}. The subset starts from the specified {{start}} index and has > the specified {{{}length{}}}. > Examples: > # Extracting a subset from an array starting from index 2 with length 2: > > {code:java} > array_slice[array[1, 2, 3, 4], 2, 2] Output: [2, 3]{code} > 2. Extracting a subset from an array starting from the second-to-last > element with length > > {code:java} > array_slice[array[1, 2, 3, 4], -2, 2] > Output: [3, 4]{code} > see also: > spark:[https://spark.apache.org/docs/latest/api/sql/index.html#slice] -- This message was sent by Atlassian Jira (v8.20.10#820010)