Superset 진짜 15분만에 돌리기

나이트 개발자·2023년 12월 2일
0
post-thumbnail

시작하기

git clone https://github.com/apache/superset.git
cd superset
git checkout 3.1.0rc1

설정하기

#SUPERSET_SECRET_KEY 생성
openssl rand -base64 42

#아래 파일을 열어 아래 키들을 세팅 
#SUPERSET_SECRET_KEY=
#MAPBOX_API_KEY=
vi docker/.env-non-dev

#Port변경
# superset: 아래 ports: 변경 (port 충돌시)
#
lsof -i :8088 
lsof -i :18088
vi docker-compose-non-dev.yml

실행하기

TAG=3.1.0rc1 docker compose -f docker-compose-non-dev.yml pull
TAG=3.1.0rc1 docker compose -f docker-compose-non-dev.yml up
  • 관리자 암호 : admin/admin
  • 변경 경로 : settings > info > reset my password

사용자 권한 관리

super set role 개요

  • Alpha: Gamma의 모든 권한을 포함하며, 데이터베이스 연결 및 수정, 대시보드 생성 및 편집 권한을 포함.
  • Gamma: 데이터 조회 및 대시보드 보기 권한. 데이터베이스 연결이나 편집 권한은 없음.
  • SQL Lab: SQL Lab을 사용하여 쿼리를 실행하고 결과를 볼 수 있는 권한.
  • Public: 매우 제한된 접근 권한. 일반적으로 로그인하지 않은 사용자에게 부여됨.

운영 팁

  1. 사전 정의된 Role은 절대 수정하지 않는 것이 바람직
  2. 일반 사용자들이 여러 datasource를 붙여서 컴퓨팅에 영향을 줄 수 있으므로 이 권한에 제약을 둘 수 있는 Gamma Role을 사용
  3. 사용자에게 datasource를 공유해야할 때마다 해당 Role에 그 datasource들을 추가
  4. Gamma Role에서 기본 추가되어 있지 않는 기능
    • SQL Lab
    • CSS Template
  5. Gamma 를 복제한 뒤 필요한 권한을 추가하는 방식으로 관리
    • can read/write CssTemplate
    • schema access on [Datasource Name].[schema name]
    • can export on Dashboard/Dataset/SavedQuery
    • can export csv on SQLLab
  6. 두 Role을 함께 부여해서 없는 Role을 쉽게 조합하여 생성 가능.
    • Gamma + sql_lab
    • Alpha + sql_lab

Timezone 관리

Postgresql 연결 세션 타임존 확인

SHOW timezone;

Name    |Value     |
--------+----------+
TimeZone|Asia/Seoul| 

Postgresql 타임존 설정

ALTER ROLE supersetuser SET timezone TO 'Asia/Seoul';

superset timzone 확인

아래와 같이 superset container에 timezone설정후 superset_app container를 재시작한다.

root@0c21664242bd:/app# docker exec -it 0c21664242bd bash
root@0c21664242bd:/app# cat /etc/timezone
Etc/UTC
root@0c21664242bd:/app# echo "Asia/Seoul" > /etc/timezone
root@0c21664242bd:/app# ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
root@0c21664242bd:/app# cat /etc/timezone
Asia/Seoul

설정된 timezone에 superset webapp에도 제대로 적용되는 지를 확인하려면 날짜나 타임스탬프 필드의 filter 세팅팝업에서 Range type을 custom으로 넣고 END field를 Now로 선택할 때 Actual time range의 종료시각이 superset_app에 방금 세팅한 타임존의 시각인지로 판별한다.

오류 대처

ValueError: Invalid decryption key
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x85 in position 2: invalid start byte

docker-compose down -v

Error: prophet package not installed
1. 컨테이너에 직접 설치하기

docker ps -a | grep superset_app
# superset_app 컨테이너에 prophet 설치
docker exec -it f0fd7acb6666 bash
pip install prophet
  1. Dockerfile에 사전 설치 스크립트 넣어두기
RUN pip install prophet

Data가 준비된 Postgresql에 superset에서 연결할 계정 생성

-- 특정 스키마에만 접근하는 사용자 생성
CREATE USER supersetuser WITH PASSWORD 'password123';

-- da 스키마에 대한 사용 권한 부여
GRANT USAGE ON SCHEMA da TO supersetuser;

-- da 스키마의 모든 현재 테이블에 대한 SELECT 권한 부여
GRANT SELECT ON ALL TABLES IN SCHEMA da TO supersetuser;
ALTER USER supersetuser SET search_path TO da;

-- da 스키마의 모든 미래 테이블에 대한 SELECT 권한 자동 부여
ALTER DEFAULT PRIVILEGES IN SCHEMA da GRANT SELECT ON TABLES TO supersetuser;

차트 그리기 위한 배경 지식

1. tutorial

- preset의 자료 활용 : https://docs.preset.io/docs/preset-vs-superset
- chatgpt로 일반적인 지식 Q&A가능하며 최신 버전에 대한 내용을 잘 대답함.

2. contribution model:

Superset에서 기여도 모드를 사용할 때, "None", "Row", "Series"라는 세 가지 옵션이 시각화에서 기여도가 어떻게 계산되고 표시될지를 결정. 분석에서 데이터의 어떤 측면을 강조하고 싶은지에 따라 달라짐

None (없음):
이 옵션은 기여도 모드가 적용되지 않음을 의미. 시각화는 실제 값을 기여도나 백분율로 변환하지 않고 그대로 표시. 원시 데이터 값에 관심이 있을 때 이 옵션을 사용.

Row (행):
"Row"를 선택하면 각 데이터 포인트의 기여도가 해당 행의 전체에 대한 백분율로 계산됨. 데이터 테이블이 있고 각 요소가 행의 총합에 어떻게 기여하는지 보고 싶을 때 유용합. 예를 들어, 여러 지역에 걸친 다양한 제품의 매출 데이터가 있다면 "Row"를 선택하면 각 제품이 각 지역의 총 매출에 기여하는 정도를 보여줌.

Series (시리즈):
"Series"를 선택하면 각 데이터 포인트의 기여도가 해당 시리즈 또는 카테고리의 총합에 대한 백분율로 계산. 이 옵션은 시계열 데이터나 다양한 차원에서 카테고리를 비교할 때 자주 사용됨. 예를 들어, 여러 해에 걸친 월별 매출 데이터가 있다면 "Series"를 선택하면 각 월의 매출이 그 해의 총 매출에 어떻게 기여하는지 보여줌.

3. resample

시간 간격 변경: resample을 사용하면 데이터를 다양한 시간 간격(예: 분, 시간, 일, 주, 월 등)으로 변경할 수 있습니다. 예를 들어, 일별 데이터를 월별 데이터로 집계하는 것과 같은 작업이 가능.

집계 연산: resample 후에는 sum(), mean(), median(), count() 등과 같은 표준 집계 함수를 적용하여, 각 시간 간격에 해당하는 데이터의 합계, 평균, 중앙값, 개수 등을 계산.

다운샘플링과 업샘플링:

  • 다운샘플링(Downsampling): 더 큰 시간 간격으로 데이터를 재구성하는 과정. 예를 들어, 시간별 데이터를 일별 데이터로 집계하는 경우.
  • 업샘플링(Upsampling): 더 작은 시간 간격으로 데이터를 재구성하는 과정. 예를 들어, 일별 데이터를 시간별 데이터로 세분화하는 경우가 여기에 해당. 업샘플링 시에는 보간 방법(interpolation) 등을 사용하여 데이터를 채워 넣을 필요가 있을 수 있음.

TBD

profile
개발하면서 또는 프러덕 관리하면서 겪는 기억해둬야하는 내용을 메모장 삼아 남긴다. Google Keep이나 메모 도구에 남기는 것과는 달리 잘 정리할 수 있어서 언젠가 들춰봐야할 내용들을 담은 글들이 게시된다.

0개의 댓글