데이터 추가하기

데이터 추가하기 (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)

자세한 내용은 다음 주제를 참고해 주세요: