- ์นดํ ๊ณ ๋ฆฌ:
๋ฐ์ ํ ๋ฐ ์ ํ ๋ฐ์ดํฐ ํจ์ (๋ฐฐ์ด/์ค๋ธ์ ํธ ๋ง๋ค๊ธฐ ๋ฐ ์กฐ์)
ARRAYS_ZIPยถ
๊ฐ๊ฐ ์ ๋ ฅ ๋ฐฐ์ด์ n๋ฒ์งธ ์์์ ๋ํ ํค-๊ฐ ํ์ด๋ฅผ ํฌํจํ๋ ์ค๋ธ์ ํธ ๋ก ๊ตฌ์ฑ๋ ๋ฐฐ์ด ์ ๋ฐํํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐํ๋ ๋ฐฐ์ด์์ ์ฒซ ๋ฒ์งธ ์ค๋ธ์ ํธ๋ ์ ๋ ฅ ๋ฐฐ์ด์์ ๊ฐ ์ฒซ ๋ฒ์งธ ์์์ ํค-๊ฐ ํ์ด๋ฅผ ํฌํจํ๊ณ , ๋ ๋ฒ์งธ ์ค๋ธ์ ํธ๋ ์ ๋ ฅ ๋ฐฐ์ด์์ ๊ฐ ๋ ๋ฒ์งธ ์์์ ํค-๊ฐ ํ์ด๋ฅผ ํฌํจํ๋ ์์ ๋๋ค.
๊ตฌ๋ฌธยถ
ARRAYS_ZIP( <array> [ , <array> ... ] )
์ธ์ยถ
array
์ ๋ ฅ ๋ฐฐ์ด.
์ ๋ ฅ ๋ฐฐ์ด์ ๊ธธ์ด๋ ๋ค์ํ ์ ์์ต๋๋ค.
์ ๋ ฅ ๋ฐฐ์ด ์ค ํ๋๋ผ๋ ์ ํ ๋ฐฐ์ด ์ธ ๊ฒฝ์ฐ ๋ชจ๋ ์ ๋ ฅ ๋ฐฐ์ด์ ์ ํ ๋ฐฐ์ด์ด์ด์ผ ํฉ๋๋ค.
๋ฐํยถ
๋ค์ ํ์ ์ค ํ๋์ ๊ฐ์ ๋ฐํํฉ๋๋ค.
์ ๋ ฅ ๋ฐฐ์ด์ด ๋ฐ์ ํ ๋ฐฐ์ด์ธ ๊ฒฝ์ฐ ์ด ํจ์๋ ์ ํ ์ค๋ธ์ ํธ๋ก ๊ตฌ์ฑ๋ ๋ฐ์ ํ ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
์ ๋ ฅ ๋ฐฐ์ด์ด ์ ํ ๋ฐฐ์ด์ธ ๊ฒฝ์ฐ ์ด ํจ์๋ ์ ํ ์ค๋ธ์ ํธ๋ก ๊ตฌ์ฑ๋ ์ ํ ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค. ์ ํ ์ค๋ธ์ ํธ์ ์ ์๋ ์ ๋ ฅ ๋ฐฐ์ด์ ์์ ๋ฐฐ์ด์ ์๋ ๊ฐ์ ์ ํ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
์ ๋ ฅ ๋ฐฐ์ด ์ค ํ๋๋ผ๋ NULL์ด๋ฉด ์ด ํจ์๋ NULL์ ๋ฐํํฉ๋๋ค.
๊ฐ ์ค๋ธ์ ํธ์๋ ์
๋ ฅ ๋ฐฐ์ด์ n๋ฒ์งธ ์์ ๊ฐ์ ๋ํ ํค-๊ฐ ํ์ด๊ฐ ํฌํจ๋ฉ๋๋ค. ํค($1
, $2
๋ฑ)๋ ์
๋ ฅ ๋ฐฐ์ด์ ์์น๋ฅผ ๋ํ๋
๋๋ค.
์๋ฅผ ๋ค์ด, ๋ค์ ๋ฐฐ์ด์ ์ ๋ฌํ๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
SELECT ARRAYS_ZIP(
[1, 2, 3],
['first', 'second', 'third'],
['i', 'ii', 'iii']
) AS zipped_arrays;
์ด ํจ์๋ ๋ค์๊ณผ ๊ฐ์ ์ค๋ธ์ ํธ ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
+---------------------+
| ZIPPED_ARRAYS |
|---------------------|
| [ |
| { |
| "$1": 1, |
| "$2": "first", |
| "$3": "i" |
| }, |
| { |
| "$1": 2, |
| "$2": "second", |
| "$3": "ii" |
| }, |
| { |
| "$1": 3, |
| "$2": "third", |
| "$3": "iii" |
| } |
| ] |
+---------------------+
๋ฐํ๋ ๋ฐฐ์ด์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฒซ ๋ฒ์งธ ์ค๋ธ์ ํธ์๋ ๋ชจ๋ ์ ๋ ฅ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๊ฐ ํฌํจ๋ฉ๋๋ค.
๋ ๋ฒ์งธ ์ค๋ธ์ ํธ์๋ ๋ชจ๋ ์ ๋ ฅ ๋ฐฐ์ด์ ๋ ๋ฒ์งธ ์์๊ฐ ํฌํจ๋ฉ๋๋ค.
์ธ ๋ฒ์งธ ์ค๋ธ์ ํธ์๋ ๋ชจ๋ ์ ๋ ฅ ๋ฐฐ์ด์ ์ธ ๋ฒ์งธ ์์๊ฐ ํฌํจ๋ฉ๋๋ค.
์ค๋ธ์ ํธ์ ํค๋ ์ ๋ ฅ ๋ฐฐ์ด์ ์๋ณํฉ๋๋ค.
$1
ํค-๊ฐ ํ์ด์๋ ์ฒซ ๋ฒ์งธ ์ ๋ ฅ ๋ฐฐ์ด์ ๊ฐ์ด ํฌํจ๋ฉ๋๋ค.$2
ํค-๊ฐ ํ์ด์๋ ๋ ๋ฒ์งธ ์ ๋ ฅ ๋ฐฐ์ด์ ๊ฐ์ด ํฌํจ๋ฉ๋๋ค.$3
ํค-๊ฐ ํ์ด์๋ ์ธ ๋ฒ์งธ ์ ๋ ฅ ๋ฐฐ์ด์ ๊ฐ์ด ํฌํจ๋ฉ๋๋ค.
์ฌ์ฉ๋ฒ ๋ ธํธยถ
๋ฐํ๋ ๋ฐฐ์ด์ ๊ธธ์ด๋ ๊ฐ์ฅ ๊ธด ์ ๋ ฅ ๋ฐฐ์ด์ ๊ธธ์ด์ ๊ฐ์ต๋๋ค. ์ผ๋ถ ์ ๋ ฅ ๋ฐฐ์ด์ด ๋ ์งง์ ๊ฒฝ์ฐ ์ด ํจ์๋ ๋ ์งง์ ๋ฐฐ์ด์์ ๋๋ฝ๋ ๋๋จธ์ง ์์์ ๋ํด JSON null ์ ์ฌ์ฉํฉ๋๋ค.
์ ๋ ฅ ๋ฐฐ์ด์ NULL ์์๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ ์ด ํจ์๋ ํด๋น ์์์ ๋ํด JSON null์ ๋ฐํํฉ๋๋ค.
์ยถ
๋ค์ ์์์๋ ํจ์์ ์๋ ๋ฐฉ์์ ๋ณด์ฌ์ค๋๋ค.
๋จ์ผ ์ ๋ ฅ ๋ฐฐ์ดยถ
๋ค์ ์์์๋ ๋จ์ผ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ, ๋ ๋ฒ์งธ, ์ธ ๋ฒ์งธ ์์๋ฅผ ํฌํจํ๋ ์ค๋ธ์ ํธ๋ก ๊ตฌ์ฑ๋ ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
SELECT ARRAYS_ZIP(
[1, 2, 3]
) AS zipped_array;
+--------------+
| ZIPPED_ARRAY |
|--------------|
| [ |
| { |
| "$1": 1 |
| }, |
| { |
| "$1": 2 |
| }, |
| { |
| "$1": 3 |
| } |
| ] |
+--------------+
๋ค์ค ์ ๋ ฅ ๋ฐฐ์ดยถ
๋ค์ ์์์๋ ์ ๋ ฅ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ, ๋ ๋ฒ์งธ, ์ธ ๋ฒ์งธ ์์๋ฅผ ํฌํจํ๋ ์ค๋ธ์ ํธ๋ก ๊ตฌ์ฑ๋ ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
SELECT ARRAYS_ZIP(
[1, 2, 3],
[10, 20, 30],
[100, 200, 300]
) AS zipped_array;
+---------------+
| ZIPPED_ARRAY |
|---------------|
| [ |
| { |
| "$1": 1, |
| "$2": 10, |
| "$3": 100 |
| }, |
| { |
| "$1": 2, |
| "$2": 20, |
| "$3": 200 |
| }, |
| { |
| "$1": 3, |
| "$2": 30, |
| "$3": 300 |
| } |
| ] |
+---------------+
๋ค์ํ ๊ธธ์ด์ ์ ๋ ฅ ๋ฐฐ์ดยถ
๋ค์ ์์์๋ ๋ค์ํ ๊ธธ์ด์ ์ ๋ ฅ ๋ฐฐ์ด์ ์ ๋ฌํฉ๋๋ค. ๋ ์งง์ ๋ฐฐ์ด์๋ ์๋ ๊ฐ์ ๊ฒฝ์ฐ ์ด ํจ์๋ ์ค๋ธ์ ํธ์์ JSON null์ ์ฌ์ฉํฉ๋๋ค.
SELECT ARRAYS_ZIP(
[1, 2, 3],
['one'],
['I', 'II']
) AS zipped_array;
+------------------+
| ZIPPED_ARRAY |
|------------------|
| [ |
| { |
| "$1": 1, |
| "$2": "one", |
| "$3": "I" |
| }, |
| { |
| "$1": 2, |
| "$2": null, |
| "$3": "II" |
| }, |
| { |
| "$1": 3, |
| "$2": null, |
| "$3": null |
| } |
| ] |
+------------------+
NULL ๋ฐ ๋น ๋ฐฐ์ด ์ฒ๋ฆฌยถ
๋ค์ ์์์ ๋ณด๋ฏ์ด, ๋ชจ๋ ์ ๋ ฅ ๋ฐฐ์ด์ ๋ํด NULL์ ์ ๋ฌํ ๊ฒฝ์ฐ ์ด ํจ์๋ SQL NULL์ ๋ฐํํฉ๋๋ค.
SELECT ARRAYS_ZIP(
[1, 2, 3],
NULL,
[100, 200, 300]
) AS zipped_array;
+--------------+
| ZIPPED_ARRAY |
|--------------|
| NULL |
+--------------+
๋ค์ ์์์๋ ๋ชจ๋ ์ ๋ ฅ ๋ฐฐ์ด์ด ๋น์ด ์์ผ๋ฏ๋ก ์ด ํจ์๋ ๋น ์ค๋ธ์ ํธ๋ฅผ ๋ฐํํ๊ฒ ๋ฉ๋๋ค.
SELECT ARRAYS_ZIP(
[], [], []
) AS zipped_array;
+--------------+
| ZIPPED_ARRAY |
|--------------|
| [ |
| {} |
| ] |
+--------------+
๋ค์ ์์์ ์ ๋ ฅ ๋ฐฐ์ด์ ์ผ๋ถ ์์๋ NULL์ ๋๋ค. ๋ฐํ๋ ์ค๋ธ์ ํธ์์ ์ด๋ฌํ ์์์ ๊ฐ์ JSON null์ ๋๋ค.
SELECT ARRAYS_ZIP(
[1, NULL, 3],
[NULL, 20, NULL],
[100, NULL, 300]
) AS zipped_array;
+-----------------+
| ZIPPED_ARRAY |
|-----------------|
| [ |
| { |
| "$1": 1, |
| "$2": null, |
| "$3": 100 |
| }, |
| { |
| "$1": null, |
| "$2": 20, |
| "$3": null |
| }, |
| { |
| "$1": 3, |
| "$2": null, |
| "$3": 300 |
| } |
| ] |
+-----------------+