Struct 함수

Struct 함수

struct 데이터를 생성·추출·조작하는 데 쓰이는 DuckDB 내장 함수들을 정리한 문서예요. 각 함수의 설명과 예시를 함께 살펴볼게요.

출처: 문서

본문

이름 설명
struct.entry 명명된 STRUCT에서 struct_extract의 별칭으로 쓰이는 점 표기.
struct[entry] 명명된 STRUCT에서 struct_extract의 별칭으로 쓰이는 대괄호 표기.
struct[idx] unnamed STRUCT(튜플)에서 인덱스(1 기반)를 사용해 struct_extract의 별칭으로 쓰이는 대괄호 표기.
row(any, ...) 인자 값들을 담은 unnamed STRUCT(튜플) 생성.
struct_concat(structs...) 여러 structs를 단일 STRUCT로 병합.
struct_contains(struct, entry) STRUCT가 지정된 entry를 포함하는지 확인.
struct_extract(struct, 'entry') STRUCT에서 명명된 entry 추출.
struct_extract(struct, idx) unnamed STRUCT(튜플)에서 인덱스(1 기반)를 사용해 entry 추출.
struct_extract_at(struct, idx) STRUCT(튜플)에서 인덱스(1 기반)를 사용해 entry 추출.
struct_insert(struct, name := any, ...) 기존 STRUCT에 필드 추가.
struct_pack(name := any, ...) 인자 값들을 담은 STRUCT 생성. entry 이름은 바인딩된 변수 이름이 됨.
struct_position(struct, entry) STRUCT 내 entry의 인덱스 반환(1 기반), 없으면 NULL 반환.
struct_update(struct, name := any, ...) 기존 STRUCT의 필드 추가 또는 업데이트.
struct_values(struct) STRUCT의 값들을 unnamed STRUCT(튜플)로 반환.

struct.entry

| 설명 | 명명된 STRUCT에서 struct_extract의 별칭으로 쓰이는 점 표기 | | 예시 | ({'i': 3, 's': 'string'}).i | | 결과 | 3 |

struct[entry]

| 설명 | 명명된 STRUCT에서 struct_extract의 별칭으로 쓰이는 대괄호 표기 | | 예시 | ({'i': 3, 's': 'string'})['i'] | | 결과 | 3 |

struct[idx]

| 설명 | unnamed STRUCT(튜플)에서 인덱스(1 기반)를 사용해 struct_extract의 별칭으로 쓰이는 대괄호 표기 | | 예시 | (row(42, 84))[1] | | 결과 | 42 |

row(any, ...)

| 설명 | 인자 값들을 담은 unnamed STRUCT(튜플) 생성 | | 예시 | row(i, i % 4, i / 4) | | 결과 | (10, 2, 2.5) |

struct_concat(structs...)

| 설명 | 여러 structs를 단일 STRUCT로 병합 | | 예시 | struct_concat(struct_pack(i := 4), struct_pack(s := 'string')) | | 결과 | {'i': 4, 's': string} |

struct_contains(struct, entry)

| 설명 | STRUCT가 지정된 entry를 포함하는지 확인 | | 예시 | struct_contains(row(1, 2, 3), 2) | | 결과 | true | | 별칭 | struct_has |

struct_extract(struct, 'entry')

| 설명 | STRUCT에서 명명된 entry 추출 | | 예시 | struct_extract({'i': 3, 'v2': 3, 'v3': 0}, 'i') | | 결과 | 3 |

struct_extract(struct, idx)

| 설명 | unnamed STRUCT(튜플)에서 인덱스(1 기반)를 사용해 entry 추출 | | 예시 | struct_extract(row(42, 84), 1) | | 결과 | 42 |

struct_extract_at(struct, idx)

| 설명 | STRUCT(튜플)에서 인덱스(1 기반)를 사용해 entry 추출 | | 예시 | struct_extract_at({'v1': 10, 'v2': 20, 'v3': 3}, 20) | | 결과 | 20 |

struct_insert(struct, name := any, ...)

| 설명 | 기존 STRUCT에 필드 추가 | | 예시 | struct_insert({'a': 1}, b := 2) | | 결과 | {'a': 1, 'b': 2} |

struct_pack(name := any, ...)

| 설명 | 인자 값들을 담은 STRUCT 생성. entry 이름은 바인딩된 변수 이름이 됨 | | 예시 | struct_pack(i := 4, s := 'string') | | 결과 | {'i': 4, 's': string} |

struct_position(struct, entry)

| 설명 | STRUCT 내 entry의 인덱스 반환(1 기반), 없으면 NULL 반환 | | 예시 | struct_position(row(1, 2, 3), 2) | | 결과 | 2 | | 별칭 | struct_indexof |

struct_update(struct, name := any, ...)

| 설명 | 기존 STRUCT의 필드 추가 또는 업데이트 | | 예시 | struct_update({'a': 1, 'b': 2}, b := 3, c := 4) | | 결과 | {'a': 1, 'b': 3, 'c': 4} |

struct_values(struct)

| 설명 | STRUCT의 값들을 unnamed STRUCT(튜플)로 반환 | | 예시 | struct_values({'a': 1, 'b': 2, 'c': 3}) | | 결과 | (1, 2, 3) |

더 알아보기 (Learn more)

  • struct 데이터 타입 자체는 sql/data_types/struct 문서를 참고해 주세요.