Cloud의 사용자 정의 함수
사용자 정의 함수(UDF)를 사용하면 ClickHouse에서 기본 제공하는 1,000개 이상의 함수로는 제공되지 않는 동작까지 확장할 수 있습니다.
ClickHouse Cloud에서 사용자 정의 함수를 생성하는 방법은 두 가지입니다:
- SQL을 사용하여
- UI와 자체 코드를 사용하여 (비공개 프리뷰)
SQL 사용자 정의 함수
SQL UDF는 람다 식을 사용해 CREATE FUNCTION SQL 문으로 생성할 수 있습니다.
이 예시에서는 간단한 실행형 사용자 정의 함수인 isBusinessHours를 생성합니다.
이 함수는 특정 타임스탬프가 일반적인 업무 시간에 해당하는지 검사하여, 해당하면 true를 반환하고 그렇지 않으면 false를 반환합니다.
- Cloud Console에 로그인하고 SQL 콘솔을 여세요
- 다음 SQL 쿼리를 작성하여
isBusinessHours함수를 생성하세요:
- 새로 생성한 UDF를 테스트하려면 아래를 실행하십시오:
다음과 같은 결과가 반환되어야 합니다:
- 방금 생성한 UDF를 제거하려면
DROP FUNCTION명령을 사용할 수 있습니다:
ClickHouse Cloud의 UDF는 사용자 수준 설정을 상속하지 않습니다. 기본 시스템 설정으로 실행됩니다.
이는 다음을 의미합니다:
- 세션 수준 설정(
SET문으로 설정됨)은 UDF 실행 컨텍스트로 전파되지 않습니다 - 사용자 프로필 설정은 UDF에 상속되지 않습니다
- 쿼리 수준 설정은 UDF 실행 내에서 적용되지 않습니다
UI를 통해 생성된 사용자 정의 함수
ClickHouse Cloud는 사용자 정의 함수를 생성할 수 있는 UI 구성 환경을 제공합니다.
이 기능을 사용해 보고 싶다면 비공개 프리뷰에 등록할 수 있도록 support에 문의하십시오.
이 예시에서는 특정 타임스탬프가 일반적인 업무 시간에 해당하는지 확인하는 간단한 실행형 사용자 정의 함수 isBusinessHours를 동일하게 생성합니다.
이전에는 SQL을 사용해 생성했지만, 이번에는 Python을 사용하고 UI를 통해 구성합니다.
Python 파일 생성하기
로컬에서 새 파일 main.py를 생성하세요:
이제 파일을 ZIP 아카이브로 압축하세요:
ClickHouse Cloud는 다음 단계에서 UI를 통해 업로드할 zip 파일 안에 main.py가 있을 것으로 예상합니다.
파일 이름을 다르게 지정하면 오류가 발생합니다.
UI를 통해 UDF 생성하기
- Cloud Console 홈에서 왼쪽 하단 메뉴의 조직 이름을 클릭하세요.
- 메뉴에서 사용자 정의 함수를 선택하세요.
- 사용자 정의 함수 페이지에서 Set up a UDF를 클릭하세요. 화면 오른쪽에 구성 패널이 열립니다.
- 함수 이름을 입력하세요. 이 예시에서는
isBusinessHours를 사용합니다. - 함수 타입으로 Executable pool 또는 Executable 중 하나를 선택하세요.
- Executable pool: 지속적으로 유지되는 프로세스 풀이 관리되며, 읽기 시 해당 풀에서 프로세스를 가져옵니다.
- Executable: 모든 쿼리마다 스크립트가 실행됩니다.
- 이 예시에서는 기본 설정을 사용합니다. 구성 매개변수의 전체 목록은 Executable user-defined functions를 참조하세요.
- Browse File을 클릭하여 이 튜토리얼 시작 부분에서 생성한
.zip파일을 업로드하세요. - 새 인수를 추가하세요. 이 예시에서는 타입이
DateTime인 인수timestamp를 추가합니다. - 반환 타입을 선택하세요. 이 예시에서는
Bool을 선택합니다. - Create UDF를 클릭하세요. 현재 빌드 상태를 표시하는 대화 상자가 나타납니다.
- 문제가 있으면 상태가 error로 변경됩니다.
- 그렇지 않으면 상태가 building에서 provisioning으로 진행됩니다. 프로비저닝을 완료하려면 서비스가 활성 상태여야 합니다. 서비스가 idle 상태이면 서비스 이름 옆의 UDF details 패널에서 Wake Up Service를 클릭하세요.
- 완료되면 상태가 deployed로 변경됩니다.
UDF 테스트하기
- 페이지 왼쪽 상단에서 Settings - return to your service view를 클릭하여 SQL 콘솔 홈 페이지로 돌아가세요.
- 왼쪽 메뉴에서 SQL 콘솔을 클릭하세요.
- 다음 쿼리를 작성하세요:
다음과 같은 결과가 표시됩니다:
새 버전 생성하기
- Cloud Console 홈에서 왼쪽 하단 메뉴의 조직 이름을 클릭하세요.
- 메뉴에서 사용자 정의 함수를 선택하세요.
isBusinessHoursUDF의 Actions 아래에 있는 점 3개를 선택한 다음 Create new version을 클릭하세요.- 수정된 코드가 포함된 zip 파일을 업로드하거나 설정을 변경한 다음 Create new version을 클릭하세요.
이제 UI를 통해 첫 번째 사용자 정의 함수를 성공적으로 추가하고, 실행되는 것을 확인했으며, 필요할 경우 새 버전을 생성하는 방법도 확인했습니다.