사전 요구 사항
- 적절한 권한이 부여된 API Key
- 관리자 Console 역할
최소 권한API 엔드포인트를 쿼리하려면 API Key에
Query Endpoints 서비스 액세스가 포함된 Member 조직 역할이 필요합니다. 데이터베이스 역할은 엔드포인트를 생성할 때 구성됩니다.1
저장된 쿼리 만들기
이미 저장된 쿼리가 있으면 이 단계는 건너뛰어도 됩니다.새 쿼리 탭을 여십시오. 예시로는 약 45억 개의 레코드가 포함된 youtube 데이터셋을 사용하겠습니다. “Create table” 섹션의 단계에 따라 Cloud 서비스에 테이블을 생성하고 데이터를 삽입하십시오.예시 쿼리에서는 사용자가 입력한year 매개변수를 기준으로 동영상당 평균 조회수가 높은 상위 10명의 업로더를 반환합니다.year)가 포함되어 있습니다.
쿼리 매개변수는 { } 안에 매개변수 유형과 함께 지정할 수 있습니다.
SQL 콘솔 쿼리 편집기는 ClickHouse 쿼리 매개변수 표현식을 자동으로 감지하고 각 매개변수에 대한 입력 필드를 제공합니다.이제 SQL Editor 오른쪽의 쿼리 변수 입력 상자에 연도 2010을 입력하여 쿼리가 정상적으로 동작하는지 빠르게 확인해 보겠습니다:다음으로 쿼리를 저장합니다:저장된 쿼리에 관한 자세한 내용은 “Saving a query” 섹션에서 확인할 수 있습니다.2
Query API endpoint 구성
쿼리 보기에서 Share 버튼을 클릭한 다음API Endpoint를 선택하면 Query API endpoint를 직접 구성할 수 있습니다.
그러면 어떤 API Key가 엔드포인트에 접근할 수 있는지 지정하라는 안내가 표시됩니다:API Key를 선택한 후에는 다음 항목을 설정해야 합니다:- 쿼리 실행에 사용할 데이터베이스 역할 선택 (
Full access,Read only또는Create a custom role) - CORS(Cross-Origin Resource Sharing) 허용 도메인 지정
curl 명령도 표시됩니다:편의를 위해 인터페이스에 표시되는 curl 명령을 아래에도 제공합니다:3
Query API 매개변수
쿼리 매개변수는{parameter_name: type} 구문으로 지정할 수 있습니다. 이러한 매개변수는 자동으로 감지되며, 예시 요청 payload에는 queryVariables 객체가 포함되어 이 객체를 통해 매개변수를 전달할 수 있습니다.4
테스트 및 모니터링
Query API endpoint가 생성되면curl 또는 다른 HTTP 클라이언트를 사용해 정상적으로 동작하는지 테스트할 수 있습니다:첫 번째 요청을 보내면 Share 버튼 바로 오른쪽에 새 버튼이 즉시 나타납니다. 이 버튼을 클릭하면 쿼리에 대한 모니터링 데이터가 포함된 플라이아웃이 열립니다:구현 세부 사항
HTTP 메서드
GET를 사용하는 경우:
- 복잡하게 중첩된 데이터가 없는 단순 쿼리
- 매개변수를 URL 인코딩하기 쉬운 경우
- 캐싱이 HTTP GET의 의미 체계로 이점을 얻을 수 있는 경우
- 복잡한 쿼리 변수(배열, 객체, 긴 문자열)
- 보안 또는 개인정보 보호를 위해 요청 본문을 사용하는 것이 바람직한 경우
- 스트리밍 파일 업로드 또는 대용량 데이터
인증
요청 구성
URL 매개변수
쿼리 매개변수
헤더
요청 본문
매개변수
지원되는 포맷
응답
성공
200 OK
쿼리가 정상적으로 실행되었습니다.
오류 코드
오류 처리 모범 사례
- 요청에 유효한 인증 자격 증명이 포함되어 있는지 확인하세요
- 전송하기 전에
queryEndpointId와queryVariables를 검증하세요 - 적절한 오류 메시지와 함께 안정적으로 오류를 처리하도록 구현하세요
엔드포인트 버전 업그레이드
x-clickhouse-endpoint-upgrade헤더를1로 설정해 포함합니다x-clickhouse-endpoint-version헤더를2로 설정해 포함합니다
- 모든 ClickHouse 포맷 지원
- 응답 스트리밍 capability
- 향상된 성능 및 기능
예시
기본 요청
버전 1
- cURL
- JavaScript
버전 2
- GET (cURL)
- POST (cURL)
- JavaScript
응답
쿼리 변수와 JSONCompactEachRow 포맷 버전 2를 사용한 요청
- GET (cURL)
- POST (cURL)
- JavaScript
응답
쿼리 변수에 배열이 포함되어 있고 테이블에 데이터를 삽입하는 요청
- cURL
- JavaScript
ClickHouse 설정 max_threads를 8로 지정한 요청
- GET (cURL)
- POST (cURL)
- JavaScript
응답을 요청해 스트림으로 파싱하기
- TypeScript
출력
파일에서 스트림을 테이블에 삽입하기
./samples/my_first_table_2024-07-11.csv 파일을 생성하세요: