데이터 추가하기
데이터 추가하기 (Append data)
Apache Druid SQL의 INSERT 함수를 이용해 기존 데이터는 그대로 둔 채 데이터소스(datasource)에 새 데이터를 추가(append)하는 방법을 보여 드릴게요. 이 튜토리얼의 예제는 멀티-스테이지 쿼리(MSQ) 태스크 엔진을 사용해서 SQL 문을 실행해요.
출처: 문서
본문
사전 준비 (Prerequisites)
이 튜토리얼의 단계를 따라가기 전에, Quickstart (local)에 설명된 대로 Druid를 다운로드하고 로컬 머신에서 실행 중이어야 해요. Druid 클러스터에 데이터를 미리 로드할 필요는 없어요.
Druid에서 데이터를 쿼리하는 방법에 익숙해야 해요. 아직 안 해 보셨다면, 먼저 Query data 튜토리얼을 진행해 주세요.
샘플 데이터 로드하기 (Load sample data)
INSERT와 EXTERN 함수를 사용해 샘플 데이터셋을 로드해 볼게요. EXTERN 함수는 외부 데이터를 읽거나 외부 위치에 데이터를 쓸 때 사용해요.
Druid 웹 콘솔에서 Query 뷰로 이동한 뒤 다음 쿼리를 실행해 주세요:
INSERT INTO "append_tutorial"
SELECT
TIME_PARSE("timestamp") AS "__time",
"animal",
"number"
FROM TABLE(
EXTERN(
'{"type":"inline","data":"{\"timestamp\":\"2024-01-01T07:01:35Z\",\"animal\":\"octopus\", \"number\":115}\n{\"timestamp\":\"2024-01-01T05:01:35Z\",\"animal\":\"mongoose\", \"number\":737}\n{\"timestamp\":\"2024-01-01T06:01:35Z\",\"animal\":\"snake\", \"number\":1234}\n{\"timestamp\":\"2024-01-01T01:01:35Z\",\"animal\":\"lion\", \"number\":300}\n{\"timestamp\":\"2024-01-02T07:01:35Z\",\"animal\":\"seahorse\", \"number\":115}\n{\"timestamp\":\"2024-01-02T05:01:35Z\",\"animal\":\"skunk\", \"number\":737}\n{\"timestamp\":\"2024-01-02T06:01:35Z\",\"animal\":\"iguana\", \"number\":1234}\n{\"timestamp\":\"2024-01-02T01:01:35Z\",\"animal\":\"opossum\", \"number\":300}"}',
'{"type":"json"}'
)
)
EXTEND ("timestamp" VARCHAR, "animal" VARCHAR, "number" BIGINT)
PARTITIONED BY DAY
결과로 만들어진 append_tutorial 데이터소스에는 이틀에 걸친 여덟 마리 동물의 레코드가 들어 있어요. 결과를 확인하려면 새 탭을 열고 다음 쿼리를 실행해 보세요:
SELECT * FROM "append_tutorial"
결과 보기 (View the results)
__time |
animal |
number |
|---|---|---|
| 2024-01-01T01:01:35.000Z | lion | 300 |
| 2024-01-01T05:01:35.000Z | mongoose | 737 |
| 2024-01-01T06:01:35.000Z | snake | 1234 |
| 2024-01-01T07:01:35.000Z | octopus | 115 |
| 2024-01-02T01:01:35.000Z | opossum | 300 |
| 2024-01-02T05:01:35.000Z | skunk | 737 |
| 2024-01-02T06:01:35.000Z | iguana | 1234 |
| 2024-01-02T07:01:35.000Z | seahorse | 115 |
데이터 추가하기 (Append data)
INSERT 함수를 사용하면 기존 데이터를 변경하지 않고도 데이터소스에 데이터를 추가할 수 있어요. 새 탭에서 다음 쿼리를 실행하면 append_tutorial 데이터소스에 데이터를 수집하면서 추가하게 돼요:
INSERT INTO "append_tutorial"
SELECT
TIME_PARSE("timestamp") AS "__time",
"animal",
"number"
FROM TABLE(
EXTERN(
'{"type":"inline","data":"{\"timestamp\":\"2024-01-03T01:09:35Z\",\"animal\":\"zebra\", \"number\":233}\n{\"timestamp\":\"2024-01-04T07:01:35Z\",\"animal\":\"bear\", \"number\":577}\n{\"timestamp\":\"2024-01-04T05:01:35Z\",\"animal\":\"falcon\", \"number\":848}\n{\"timestamp\":\"2024-01-04T06:01:35Z\",\"animal\":\"giraffe\", \"number\":113}\n{\"timestamp\":\"2024-01-04T01:01:35Z\",\"animal\":\"rhino\", \"number\":473}"}',
'{"type":"json"}'
)
)
EXTEND ("timestamp" VARCHAR, "animal" VARCHAR, "number" BIGINT)
PARTITIONED BY DAY
Druid는 seahorse 다음 날짜의 행들을 추가해요. 태스크가 완료되면 새 탭을 열어 결과를 확인하는 다음 쿼리를 실행해 주세요:
SELECT * FROM "append_tutorial"
결과 보기 (View the results)
__time |
animal |
number |
|---|---|---|
| 2024-01-01T01:01:35.000Z | lion | 300 |
| 2024-01-01T05:01:35.000Z | mongoose | 737 |
| 2024-01-01T06:01:35.000Z | snake | 1234 |
| 2024-01-01T07:01:35.000Z | octopus | 115 |
| 2024-01-02T01:01:35.000Z | opossum | 300 |
| 2024-01-02T05:01:35.000Z | skunk | 737 |
| 2024-01-02T06:01:35.000Z | iguana | 1234 |
| 2024-01-02T07:01:35.000Z | seahorse | 115 |
| 2024-01-03T01:09:35.000Z | zebra | 233 |
| 2024-01-04T01:01:35.000Z | rhino | 473 |
| 2024-01-04T05:01:35.000Z | falcon | 848 |
| 2024-01-04T06:01:35.000Z | giraffe | 113 |
| 2024-01-04T07:01:35.000Z | bear | 577 |
더 알아보기 (Learn more)
자세한 내용은 다음 주제를 참고해 주세요:
- SQL 기반 수집 참조 (SQL-based ingestion reference) — MSQ 아키텍처에 대한 참조.
- SQL 기반 수집 쿼리 예제 (SQL-based ingestion query examples) — MSQ 태스크 엔진을 사용하는 예제 쿼리들.