[Google/BigQuery]배열 함수

류성훈·2022년 8월 9일
post-thumbnail

ARRAY

서브 쿼리의 행마다 요소 한 개가 있는 ARRAY를 반환합니다.

예시

SELECT ARRAY
  (SELECT 1 UNION ALL
   SELECT 2 UNION ALL
   SELECT 3) AS mew_array;

여러 개의 열이 포함된 서브 쿼리에서 ARRAY를 구성하려면 SELECT AS STRUCT를 사용하도록 서브 쿼리를 변경합니다. 그러면 ARRAY 함수가 STRUCTARRAY를 반환합니다.

ARRAY는 서브 쿼리의 각 행에 하나의 STRUCT를 포함하며, 각각의 STRUCT는 해당 행의 각 열당 필드 1개를 포함합니다.

SELECT ARRAY
  (SELECT AS STRUCT 1, 2, 3
   UNION ALL SELECT AS STRUCT 4, 5, 6) AS new_array;

마찬가지로, 하나 이상의 ARRAY를 포함하는 서브 쿼리에서 ARRAY를 구성하려면 SELECT AS STRUCT를 사용하도록 서브 쿼리를 변경합니다.

SELECT ARRAY
  (SELECT AS STRUCT (1,2,3) UNION ALL
   SELECT AS STRUCT (4,5,6)) AS new_array;

ARRAY_CONCAT

요소 유형이 같은 하나 이상의 배열을 단일 배열로 연결합니다.

입력 인수가 NULL이면 이 함수는 NULL을 반환합니다.

예시

SELECT ARRAY_CONCAT([1, 2], [3, 4], [5, 6]) as count_to_six;

ARRAY_LENGTH

배열의 크기를 반환합니다.

빈 배열에는 0을 반환합니다.

예시

WITH items AS
  (SELECT ["coffee", NULL, "milk"] as list
  UNION ALL
  SELECT ["cake", "pie"] as list)
SELECT ARRAY_TO_STRING(list, ', ', 'NULL '), ARRAY_LENGTH(list) AS size
FROM items;

ARRAY_TO_STRING

array_expression에 있는 요소의 연결을 STRING으로 반환합니다. array_expression값은 STRING또는 BYTES 데이터 유형의 배열일 수 있습니다.

예시

WITH items AS
  (SELECT ['coffee', 'tea', 'milk'] as list
  UNION ALL
  SELECT ['cake', 'pie', NULL] as list)

SELECT ARRAY_TO_STRING(list, '--') AS text
FROM items;

GENERATE_ARRAY

값 배열을 반환합니다. start_expressionend_expression 매개변수는 배열의 시작과 끝을 결정합니다(해당 값 포함).

예시

SELECT GENERATE_ARRAY(1, 5) AS example_array;

다음은 사용자가 지정한 단계 크기를 사용하여 배열을 반환합니다.

SELECT GENERATE_ARRAY(0, 10, 3) AS example_array;

GENERATE_DATE_ARRAY

날짜 배열을 반환합니다. start_dateend_date 매개변수는 배열의 시작과 끝을 결정합니다(해당 값 포함).

예시

SELECT GENERATE_DATE_ARRAY('2016-10-05', '2016-10-08') AS example;

SELECT GENERATE_DATE_ARRAY('2016-10-05', '2016-10-01', INTERVAL -3 DAY) AS example;

다음은 MONTH를 date_part 간격으로 사용하여 날짜 배열을 반환합니다.

SELECT GENERATE_DATE_ARRAY('2016-01-01',
  '2016-12-31', INTERVAL 2 MONTH) AS example;

GENERATE_TIMESTAMP_ARRAY

지정된 간격으로 구분된 TIMESTAMPARRAY를 반환합니다.

start_timestampend_timestamp매개변수는 ARRAY의 하한 및 상한을 결정합니다(해당 값 포함).

예시

다음 예시에서는 1일 간격으로 TIMESTAMPARRAY를 반환합니다.

SELECT GENERATE_TIMESTAMP_ARRAY('2016-10-05 00:00:00', '2016-10-07 00:00:00',
                                INTERVAL 1 DAY) AS timestamp_array;

숫자로 뜨는데 .. ?

ARRAY_REVERSE

요소가 있는 입력 ARRAY를 역순으로 반환합니다.

예시

WITH example AS (
  SELECT [1, 2, 3] AS arr UNION ALL
  SELECT [4, 5] AS arr UNION ALL
  SELECT [] AS arr
)
SELECT
  arr,
  ARRAY_REVERSE(arr) AS reverse_arr
FROM example;


출처
https://cloud.google.com/bigquery/docs/reference/standard-sql/array_functions?hl=ko

profile
(전)Backend Developer / (현)Data Engineer

0개의 댓글