데이터 연동 - 데이터 가져오기 (Data Import)

circle-info

엔터프라이즈 플랜에서만 지원하는 기능입니다.

데이터 가져오기 (Data Import)

데이터 가져오기 (Data Import) 기능을 통해서 고객사의 AWS S3, GCP GCS 에 저장되어 있는 이벤트 데이터를 핵클로 보낼 수 있습니다. 데이터 가져오기 기능은 일별 (Daily) 로 데이터를 가져옵니다.

지원 가능 저장소 (Supported Cloud Storage)

AWS

S3

Y

AWS

Redshift

지원 예정

GCP

GCS

Y

GCP

BigQuery

지원 예정

사전 준비 (Requirements)

데이터 추출 전 다음 작업이 필요합니다.

Key 생성 및 권한 부여: GCP GCS

GCP GCS 의 경우 GCP IAM > 서비스 계정 키 생성 및 관리arrow-up-right 문서를 참고해 Key 를 생성할 수 있습니다.

GCS 접근을 위한 Key 생성시 아래의 권한이 필요합니다.

storage.buckets.get
storage.objects.get
storage.objects.create
storage.objects.delete
storage.objects.list

Key 생성 및 권한 부여: AWS S3

AWS S3의 경우 다음 문서들을 참고해 Key를 생성하고 필요한 권한을 부여할 수 있습니다.

  1. AWS Docs: IAM User 생성하기arrow-up-right 문서를 따라 AWS IAM User 를 생성합니다.

  2. AWS Docs: IAM Policy 생성하기arrow-up-right 를 따라 Policy 를 생성하고 아래 코드로 첨부된 IAM Policy 정책을 포함해 생성합니다. 이후 이전 단계에서 생성한 IAM Role 에 IAM Policy 정책을 추가합니다.

  3. AWS Docs: IAM Key 생성하기arrow-up-right 를 따라 Key 를 생성합니다

데이터 가져오기를 위한 데이터 형식 (Data Import Format)

데이터 가져오기는 현재 Apache Parquetarrow-up-right 형식을 지원합니다. 아래는 전달되는 Parquet 형식 데이터의 스키마입니다. 아래 테이블에 설명된 포맷으로 가공해 저장합니다.

Column Category
Column Name
Column Type
Column Value (Example)
Description

Insert ID

insert_id

STRING

8fb8e088-9245-4fce-bb87-7e09d9917ed6

UUID 값으로 이벤트 중복을 확인하기 위해 사용됩니다.

Event Key

event_key

STRING

purchase

이벤트 명칭입니다.

Client Timestamp

ts

TIMESTAMP

2023-01-01 00:01:02.333 (UTC)

UTC 기준의 Timestamp (Millis 미만은 절삭)

Metric Value

metric_value

DECIMAL(24, 6)

0.0

분석 및 실험에서 값 연산을 위해 사용합니다. (필요 없을 경우 0.0 저장)

Identifiers

identifiers

Map<String, String>

{ "id": "8fb8e088-9245-4fce-bb87-7e09d9917ed6", "device_id": "89ABCDEF-01234567-89ABCDEF", "user_id": "49591", "session_id": "1659710029.4.1.1659710504.0" }

사용자 식별자를 담고 있는 맵

  • (옵션) user_id: 로그인 사용자 식별자(Hackle SDK 전송 시 userId 에 해당하는 값)

  • (필수) id: 기기 식별자(Hackle SDK 전송 시 id 에 해당하는 값)

  • (필수) device_id 기 식별자(Hackle SDK 전송 시 deviceId 에 해당하는 값)

  • (옵션, GA 사용시 적재) ga_session_id, ga_device_id

Identifiers 키 값은 Lowercase 로 저장됩니다.

Event Properties

event_properties

Map<String, String>

{ "product_id": "33537", "product_category": "LEISURE", "order_id": "291994100" }

이벤트 정보를 담고 있는 프로퍼티

Property 키 값은 Lowercase 로 저장됩니다.

User Properties

user_properties

Map<String, String>

{ "grade": "GOLD", "date_signed": "2022-07-01", "date_recent": "2023-01-17" }

사용자 정보를 담고 있는 프로퍼티

Property 키 값은 Lowercase 로 저장됩니다.

Platform Properties

platform_properties

Map<String, String>

# Android 예시

/{ "osname":"Android", "appversion": "6.9.0", "language":"ko", "osversion":"12", "devicevendor":"samsung", "versionname":"6.77.0-DEBUG", "platform":"Mobile", "devicemodel":"SM-S908N" /}

iOS 예시

{ "osname":"iOS", "appversion": "6.9.3", "language":"ko-KR", "osversion":"16.0.2", "devicevendor":"Apple", "versionname":"6.77.0", "platform":"Mobile", "devicemodel":"iPhone14,2" /}

플랫폼 정보를 담고있는 프로퍼티

  • (필수) osname (Android, iOS)

  • (필수) appversion

Property 키 값은 Lowercase 로 저장됩니다.

아래는 위 테이블에서 설명한 데이터 포맷에 대한 요약입니다.

데이터 가공하기 (Processing for Data Import)

데이터를 앞서 언급한 Parquet Format 에 맞추어 가공후 Bucket 내에 일별로 저장합니다.

다음은 저장된 파티션 및 파일의 예시입니다.

데이터 가져오기 요청

데이터 가져오기 요청은 핵클로 문의 부탁드립니다. 데이터 가져오기를 위해 아래 정보가 필요합니다.

마지막 업데이트