Slack 데이터 수집과 권한 범위
Slack 커넥터는 CData JDBC 드라이버로 Slack 데이터를 관계형 테이블처럼 질의하고 Foundry 데이터셋에 저장합니다. 대량 가져오기, 원천 탐색과 증분 수집은 Beta 단계입니다. Data Connection에 표시되지 않으면 Palantir 지원에 접근을 요청할 수 있으며 개발 중 기능이 바뀔 수 있습니다.
앱과 bot 토큰
Data Connection의 +New Source에서 Slack 소스를 선택합니다. Bearer 토큰으로 인증하며 대상 Slack 작업 공간에 설치한 앱의 bot user token을 사용할 수 있습니다. bot 토큰은 소스가 특정 개인에게 직접 의존하지 않도록 장기 운영할 때 유용합니다.
- 대상 작업 공간에 Slack 앱을 만듭니다.
- 수집할 데이터에 필요한 범위를 설정합니다.
- 앱을 작업 공간에 설치합니다. 작업 공간 관리자 승인이 필요할 수 있습니다.
- 설치한 앱의 bot 토큰을 소스의 Credentials settings에 입력합니다.
앱에 범위를 추가한 뒤에는 다시 설치해야 합니다. 수집만 수행하면 쓰기 권한 범위는 필요하지 않습니다.
테이블과 채널 유형별 범위
| 테이블 | 범위 | 적용 조건 |
|---|---|---|
Users | users:read | 사용자 로드에 필요합니다. |
Channels | channels:read, groups:read, im:read, mpim:read | 각각 공개 채널, 비공개 채널, 일대일 메시지, 그룹 직접 메시지에 대응합니다. 채널 유형 필터가 없으면 모든 유형을 읽으므로 모두 필요합니다. |
Messages, MessageReplies | channels:history, groups:history, im:history, mpim:history와 해당 Channels 범위 | 각각의 채널 유형에서 메시지와 답글을 읽습니다. 유형을 제한하지 않으면 모두 필요합니다. |
메시지와 답글을 수집하려면 범위 외에 앱의 채널 멤버십도 필요합니다. bot 토큰을 사용하는 앱을 해당 Slack 채널에 먼저 추가합니다. 사용자가 앱을 수동 추가하거나 앱의 bot 토큰으로 conversations.join을 호출해 공개 채널에 참여시킬 수 있습니다.
네트워크와 소스 설정
slack.com의 443 포트에 접근해야 합니다. Foundry 워커에는 해당 외부 통신 정책을 추가합니다. 에이전트를 사용하면 에이전트 호스트에서도 이 도메인에 접근할 수 있어야 합니다.
| 항목 | 필수 여부 | 의미 |
|---|---|---|
Credentials settings | 필수 | 앱의 Bearer 토큰을 구성합니다. |
Proxy settings | 선택 | 프록시 연결을 활성화하고 사용자 이름과 비밀번호를 입력합니다. |
Logs | 선택 | 커넥터가 기록할 로그를 설정합니다. |
동기화 생성과 범위
소스 Overview의 Explore and create syncs에서 테이블을 고르고 Create sync for x datasets를 선택합니다. 생성 후 Edit syncs의 왼쪽 Syncs 패널에서 대상 오른쪽의 >를 선택해 세부 설정을 엽니다.
| 항목 | 필수 여부 | 의미 |
|---|---|---|
Table | 필수 | 가져올 Slack 테이블입니다. |
Column selection | 선택 | 수집할 열을 제한합니다. 선택하지 않으면 모든 열을 수집합니다. |
Row filters | 선택 | 열 값을 기준으로 수집할 행을 제한합니다. |
Limit | 선택 | SQL limit으로 실행당 최대 행 수를 정합니다. |
Incremental | 선택 | 이전 수집 상태를 저장하고 이후 새로 조건을 충족한 행을 가져옵니다. |
증분 동기화
일반 동기화는 원천의 변경 여부와 관계없이 조건에 맞는 모든 행을 읽습니다. 증분 동기화에는 엄격하게 단조 증가하는 열이 필요합니다. 사용할 수 있는 자료형은 다음과 같습니다.
DATE, TIMESTAMP
int, TINYINT, SMALLINT, INTEGER, long, BIGINT, NUMERIC, NUMBER, DECIMAL, DEC
string, VARCHAR, CHAR, NVARCHAR, NCHAR, LONGNVARCHAR, LONGVARCHAR
Column과 Initial value를 모두 지정합니다. 지원 자료형의 열이 없으면 Column 선택 목록이 비어 있습니다.
메시지 수집 예시
Messages 테이블은 토큰이 접근 가능한 채널의 스레드 답글을 제외한 메시지를 제공합니다. CreatedTime을 증분 열로 선택하고 트랜잭션을 APPEND로 구성한 뒤 수집 시작 시각을 Initial value로 지정할 수 있습니다.
첫 실행에서는 시작 시각 이상에 생성한 메시지를 가져옵니다. 다음 실행에서는 이전 실행의 가장 최근 CreatedTime 이상에 생성한 메시지를 가져옵니다. 경계 시각을 포함하는 조건이므로 같은 시각의 데이터 처리 방식을 고려합니다.
스레드 답글은 MessageReplies 테이블에서 CreatedTime을 사용하여 같은 방식으로 구성합니다.
열 이름
열 이름은 밑줄이나 영문자로 시작해야 하며 밑줄, 영문자와 숫자만 포함할 수 있습니다.
| 이름 | 허용 여부 |
|---|---|
_colum_name | 허용 |
a_column_name_123 | 허용 |
1ColumnName | 숫자로 시작하므로 허용하지 않습니다. |
a-column-name* | 하이픈과 별표가 있어 허용하지 않습니다. |
å-column-name | 영문자가 아닌 문자가 있어 허용하지 않습니다. |
행 필터
필터를 구성하려면 테이블 미리보기가 성공해야 합니다. 화면 아래 Preview of inbound data를 새로고침하고 필터를 적용한 뒤 다시 미리보기하여 결과를 확인합니다.
조건 집합은 all 또는 at-least one으로 평가합니다. 각각 SQL의 AND, OR에 해당하며 조건 집합을 중첩할 수 있습니다. 개별 조건은 열 값과 입력한 값을 비교합니다. 예를 들어 CreatedAt이 12/04/2021과 같다는 조건은 그 값의 행만 수집합니다.
EQUAL TO
GREATER THAN
LESS THAN
GREATER THAN OR EQUAL TO
LESS THAN OR EQUAL TO
NOT EQUAL TO
IS NULL
IS NOT NULL
비교 연산은 표준 SQL과 같은 의미이며 열 자료형에 따라 사용할 수 있는 연산이 달라집니다. 문자열에는 SQL-92 문법의 Like, Not like도 지원합니다.