OSS의 시각 형상 도구 슈퍼셋을 시도했습니다.
개시하다
WACUL Advent Calendar 2016'은 11일째 보도됐다.
이번에는 에어뱅크가 만든 시각화 도구인 슈퍼rset의 소감과 소개를 써 보겠습니다.
이른바 슈퍼마켓
공식에 http://airbnb.io/superset/index.html라고 쓰여 있다.개인적으로는 다음과 같은 도구라고 생각합니다.
유연한 데이터 입력 출력 기구
슈퍼rset은 축적된 데이터를 출력하기 위해 도표로 출력하거나 json이나 csv 등 다양한 출력 형식에 대응한다.또 입력원도 MySQL과 PostgresSQL 등 다양한 서비스를 지원한다.
Dashboard, Slice
슈퍼마켓에는'Dashboard'와'Slice'의 구성 부분이 있다.대시보드가 슬릭의 집합인 것 같아.쉽게 말하면 슬라이스는 대시보드에서 의미 있는 표현 단위다.
이 이미지로 전체 화면은 대시보드,'리지온 필터','%Rural','Growth Rate'등이 슬라이스로 바뀌었다.
대시보드 화면 어디에 어떤 슬리케이션을 두느냐는 설정은 화면 관리에서 할 수 있다.
좀 못생겼지만 다시보드에'사이언스'형식에 어떤 슬라이스,'포지션 JSON'형식에 어느 위치를 둘지 적는다.
Slice, Visualization Type, Datasource
슬라이스를 구성하는 것은 데이터 자체와 표시 방법 두 가지가 있다.각 임무를 수행하는 구성 요소는 슈퍼마켓에서'Datasource','Visualization Type'이라고 불린다.슈퍼마켓에는 Visualization Type이 많이 준비되어 있습니다.
(↑는 일부)
Flash 기반 웹 응용 프로그램
superrset은 Flash 기반 웹 응용 프로그램입니다.Flash 개발에 익숙한 사람이라면 간단하게 맞춤형으로 제작할 수 있을 것 같아요.
다양한 내장형 관리 기능
인증 및 액세스 제어 방법은 다양합니다.
사용자 속성인 Role을 설정하거나 각 Role에 대해 허용되는 작업을 설정할 수 있습니다.또한 시스템을 업데이트하는 동작이라면 로그를 남긴다.
나는 내가 하면 시간이 좀 걸릴 것 같지만 슈퍼마켓은 한 줄도 코드를 쓰지 않고 실현할 수 있어서 기쁘다.
그나저나 기본적으로 이전 관리 DB에 기록된 비밀번호 인증이지만 앞서 설명한 대로 Flash 기반 앱이기 때문에 오옥스 등 인증 유형도 변경할 수 있다.(OAuth면view 주변 개발이 필요하다고 생각해요)
자신의 데이터로 슈퍼셋을 시험적으로 사용하다
어렵기 때문에 자신의 데이터로 슈퍼마켓을 사용합니다.이번에는 다음과 같은 일을 했다.
MySQL로 데이터 소스 전환
우선, 슈퍼셋config.py에서 아래와 같다.
SQLALCHEMY_DATABASE_URI = 'mysql://root:testtest@localhost/tdb1'
이렇게 하면 루트 사용자, 비밀번호testtest, tdb1이라는 데이터베이스에 연결할 수 있다.다음에 사용자가 만든 슈퍼셋의 초기화는 다음과 같습니다.
fabmanager create-admin --app superset
superset db upgrade
superset init
이렇게 하면 완성된다.다음 양식이 작성되었는지 확인합니다.mysql> show tables;
+-------------------------+
| Tables_in_tdb1 |
+-------------------------+
| ab_permission |
| ab_permission_view |
| ab_permission_view_role |
| ab_register_user |
| ab_role |
| ab_user |
| ab_user_role |
| ab_view_menu |
| access_request |
| alembic_version |
| clusters |
| columns |
| css_templates |
| dashboard_slices |
| dashboard_user |
| dashboards |
| datasources |
| dbs |
| favstar |
| logs |
| metrics |
| query |
| slice_user |
| slices |
| sql_metrics |
| table_columns |
| tables |
| url |
+-------------------------+
28 rows in set (0.00 sec)
여러 Visualization Type으로 데이터를 시각화합니다.
우선, 데이터를 준비한다.이번에 Google에서 유행하는 데이터를 사용했습니다.2015/12/01-205/12/31'연인','현충'이라는 키워드로 향후 점수를 획득해 가시화했다.
우선 이런 탁자를 준비하세요
mysql> desc trend201512;
+---------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| date | date | NO | | NULL | |
| score_koibito | int(11) | NO | | NULL | |
| score_riajuu | int(11) | NO | | NULL | |
+---------------+---------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
다음에 데이터를 import으로 슈퍼set 측의 데이터 원본에 로그인합니다.다양한 설정을 한 후 Visualization Type을 table view와 line chart로 설정하여 슬라이스로 만들면 다음과 같은 대시보드를 만들 수 있다.
어떤 이유로 평일인데도 24일과 25일의 득점이 높았다.
그나저나 이 그래프를 만드는 과정에서 슈퍼셋(개인)도 힘든 점을 봤다.
우선 그 전에 슈퍼마켓의 장점은 무엇입니까? "SQL을 쓰지 않고 데이터를 추출할 수 있습니다. (도표로 표시하거나 내보낼 수 있습니다.)"
하지만 이것도 내가 괴로워하는 이유다.
예를 들어 서버 측의 select date,scorekoibito,score_riajuu from trend201512; highcharts 근처에서 발행 조회와 함께 되돌아오는 데이터를 선명하게 묘사하면 됩니다.어려운 거 없어요.
한편, 슈퍼마켓에서 SQL로 하면 필드의 일부분만 지정하고'metrics 정의'작업은 따로 진행해야 한다.아무래도 각 표의 필드에 집합 함수를 더해 별명을 붙여 사용하기 위한 기구로 기본적으로count, avg,sum 등을 준비한다.Visualization Type을 기반으로 metrics를 설정합니다.
이번 예에서 테이블 뷰는 원래 집합 함수를 필요로 하지 않기 때문에'identity (항등영사) '이metrics type을 특별히 정의했습니다.결과적으로 테이블 뷰를 만들기 위해 슈퍼세이트가 발매한 SQL은 다음과 같다.
SELECT score_koibito AS score_koibito,
score_riajuu AS score_riajuu
FROM trend201512
WHERE date >= STR_TO_DATE('1916-12-11 08:52:13', '%%Y-%%m-%%d %%H:%%i:%%s')
AND date <= STR_TO_DATE('2016-12-11 08:52:13', '%%Y-%%m-%%d %%H:%%i:%%s') LIMIT 50
이 SQL은 작업 UI를 통해 자동으로 생성되므로 SQL을 수동으로 작성할 수 없습니다.또한date는 반드시 지정해야 하며, date의 지정 방법도 슈퍼set 혼자만의 DSL식 기법을 사용해서 쓰기 어렵다.... 저는 많은 것을 써 보았지만 어쨌든 SQL의 데이터 추출 작업을 지원해 주시기 바랍니다(UI 조작을 통해 정형 작업을 더욱 효율적으로 하는 장점은 알고 있지만).또한 Visualization Type에 따라 UI에 지정된 항목도 다르기 때문에 학습 비용이 보기에 그렇게 싸지 않다고 느낀다.
하고 싶은데 못한 거.
슈퍼마켓은 무거운 검색어를 던질 때celery와 연합하여 비동기적으로 실행할 수 있습니다.이 페이지에는 단서가 있는 일이 쓰여 있다
http://airbnb.io/superset/sqllab.html
Support for long-running queries - uses the Celery distributed queue
to dispatch query handling to workers
supports defining a “results backend” to persist query results
최후
에어뱅크제의 시각화 도구인 슈퍼마켓에 대해 썼습니다.불만도 적었지만 풍부한 기능을 담은 훌륭한 도구라고 생각해요.특히 데이터 분석 위주로 시각화할 수 없는 사람에게 추천한다.또 잘하면 모니터링에도 쓸 수 있을 것 같다.
※ 그나저나 SQL을 쓰고 싶은 사람은re:dashhttps://redash.io/를
※ SQLlab을 사용하면 SQL을 직접 쓸 수 있을 것 같지만, UI 작업과 공존하는 방법을 이해할 수 없습니다.SQLlab과 Slice의 설정 페이지는 분리되어 있습니다.
Reference
이 문제에 관하여(OSS의 시각 형상 도구 슈퍼셋을 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/risuoku/items/618b7d8614325025ab59텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)