Redash의 QueryRunner 확장
6346 단어 파이썬도커Elasticsearchredash
기존 파일을 수정하여 대응하는 것도 가능했지만, 그렇다면 버전 업 시에 번거롭기 때문에 이번에는 QueryRunner를 새로 추가해 보았습니다.
환경
Redash(v7.0.0)
Elasticsearch(v7.3.2)
도커
확장 내용
Elasticsearch에서 여러 Aggregation 쿼리 결과를 Redash의 결과로 표 형식으로 올바르게 표시합니다.
구체적으로는, GROUP BY 항목 1, 항목 2와 같이 지정했을 때와 같은 표 결과를 얻을 수 있으면, Redash로 그래프를 작성하는 것이 가능하기 때문에.
다음과 같은 Elasticsearch의 쿼리 결과를 테이블 형식으로 구문 분석합니다. (결과 구조에서 일부 데이터 생략)
{
"aggregations": {
"1st": {
"buckets": [
{
"key": "2019年10月29日",
"doc_count": 60,
"2nd": {
"buckets": [
{
"key": "システム部",
"doc_count": 10
},
{
"key": "人事部",
"doc_count": 20
},
{
"key": "総務部",
"doc_count": 30
}
]
}
},
{
"key": "2019年10月30日",
"doc_count": 600,
"2nd": {
"buckets": [
{
"key": "システム部",
"doc_count": 100
},
{
"key": "人事部",
"doc_count": 200
},
{
"key": "総務部",
"doc_count": 300
}
]
}
}
]
}
}
}
Redash에 추가하는 방법
새로운 QueryRunner를 추가하는 경우, 미리 준비되어 있는 환경 변수 "REDASH_ADDITIONAL_QUERY_RUNNERS"로 추가를 할 수 있습니다.
Redash에서 제공하는 환경 변수 목록
추가 로드 설정
docker-compose.yml에 설정을 추가합니다.
추가는 환경 섹션에 추가됩니다.
docker-compose.ymlenvironment:
REDASH_ADDITIONAL_QUERY_RUNNERS: "redash.query_runner.elasticsearch_custamize"
추가 파일 배치
이미 기존 파일이 있는 디렉토리에 이번에 추가할 파일을 배치합니다.
redash/query_runner
elasticsearch.py
oracle.py
pg.py
・
・
elasticsearch_custamize.py
・
Docker 컨테이너 시작(재시작)
개발 버전에서 확인하려면 redash 바로 아래의 docker-compose.yml을 기반으로 docker-compose를 수행합니다.
릴리스 버전에서 확인하는 경우, 미리 파일을 배치한 Redash의 Image를 작성해 두게 되고, redash/setup 바로 아래의 docker-compose.yml를 베이스로, docker-compose를 실시합니다.
※기동시에 추가 지정한 개소에 대상의 파일이 없으면 에러가 됩니다.
redash
/setup
docker-compose.yml ← リリース版用
Dockerfile
docker-compose.yml ← 開発用
추가한 QueryRunner 사용
New Data Source에서 추가한 Data Source를 선택합니다.
올바르게 로드하는 경우 데이터 소스 목록에 표시됩니다.
※Data Source에 대한 이미지가 별도로 관리되고 있는 것 같고, 이번은 기존의 Elasticsearch를 남긴 채로 별명으로 작성했으므로, 아무것도 이미지가 표시되어 있지 않은 것 같습니다.
아래와 같이 이름을 어긋나지 않으면 기존의 물건을 덮어쓰기 때문에 주의가 필요.
elasticsearch_custamize.pyclass ElasticsearchCustom(BaseElasticSearch):
@classmethod
def name(cls):
return 'ElasticsearchCustom'
register(ElasticsearchCustom)
Elasticsearch 연결 정보를 입력하여 SAVE를 수행합니다.
이번에 추가한 elasticsearch_custamize.py에서 설정 정보를 정의하게 됩니다만, 이번은 기존의 elasticsearch.py의 확장판이기 때문에, 접속 정의 정보는 기존의 Elasticsearch와 같이 등록합니다.
Query에서 등록한 Data Source를 사용하여 쿼리를 작성하고 실행
실행하는 쿼리는 아래와 같다.
{
"index": "インデックス名",
"size": 100,
"aggs": {
"1st": {
"terms": {
"field": "LogDate"
},
"aggs": {
"2nd": {
"terms": {
"field": "SectionName"
}
}
}
}
}
}
elasticsearch_custamize.py로 처리한 결과가 Table에 표시된다.
1st
2nd
1st_doc_count
2nd_doc_count
2019년 10월 29일
시스템부
60
10
2019년 10월 29일
인사부
60
20
2019년 10월 29일
총무부
60
30
2019년 10월 30일
시스템부
600
100
2019년 10월 30일
인사부
600
200
2019년 10월 30일
총무부
600
300
이 표 결과를 얻으면 그래프를 만들 수 있습니다!
만약 이것으로 커버할 수 없는 요건이 왔을 때, 다양한 쿼리 결과의 JSON 패턴을 가미해, 프로그램을 복잡화시키는 것보다는, QueryResult의 합치기술로 실현하는 것도 손일까라고.
Reference
이 문제에 관하여(Redash의 QueryRunner 확장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/J-SHK/items/e270fc797b630a182985
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Elasticsearch에서 여러 Aggregation 쿼리 결과를 Redash의 결과로 표 형식으로 올바르게 표시합니다.
구체적으로는, GROUP BY 항목 1, 항목 2와 같이 지정했을 때와 같은 표 결과를 얻을 수 있으면, Redash로 그래프를 작성하는 것이 가능하기 때문에.
다음과 같은 Elasticsearch의 쿼리 결과를 테이블 형식으로 구문 분석합니다. (결과 구조에서 일부 데이터 생략)
{
"aggregations": {
"1st": {
"buckets": [
{
"key": "2019年10月29日",
"doc_count": 60,
"2nd": {
"buckets": [
{
"key": "システム部",
"doc_count": 10
},
{
"key": "人事部",
"doc_count": 20
},
{
"key": "総務部",
"doc_count": 30
}
]
}
},
{
"key": "2019年10月30日",
"doc_count": 600,
"2nd": {
"buckets": [
{
"key": "システム部",
"doc_count": 100
},
{
"key": "人事部",
"doc_count": 200
},
{
"key": "総務部",
"doc_count": 300
}
]
}
}
]
}
}
}
Redash에 추가하는 방법
새로운 QueryRunner를 추가하는 경우, 미리 준비되어 있는 환경 변수 "REDASH_ADDITIONAL_QUERY_RUNNERS"로 추가를 할 수 있습니다.
Redash에서 제공하는 환경 변수 목록
추가 로드 설정
docker-compose.yml에 설정을 추가합니다.
추가는 환경 섹션에 추가됩니다.
docker-compose.ymlenvironment:
REDASH_ADDITIONAL_QUERY_RUNNERS: "redash.query_runner.elasticsearch_custamize"
추가 파일 배치
이미 기존 파일이 있는 디렉토리에 이번에 추가할 파일을 배치합니다.
redash/query_runner
elasticsearch.py
oracle.py
pg.py
・
・
elasticsearch_custamize.py
・
Docker 컨테이너 시작(재시작)
개발 버전에서 확인하려면 redash 바로 아래의 docker-compose.yml을 기반으로 docker-compose를 수행합니다.
릴리스 버전에서 확인하는 경우, 미리 파일을 배치한 Redash의 Image를 작성해 두게 되고, redash/setup 바로 아래의 docker-compose.yml를 베이스로, docker-compose를 실시합니다.
※기동시에 추가 지정한 개소에 대상의 파일이 없으면 에러가 됩니다.
redash
/setup
docker-compose.yml ← リリース版用
Dockerfile
docker-compose.yml ← 開発用
추가한 QueryRunner 사용
New Data Source에서 추가한 Data Source를 선택합니다.
올바르게 로드하는 경우 데이터 소스 목록에 표시됩니다.
※Data Source에 대한 이미지가 별도로 관리되고 있는 것 같고, 이번은 기존의 Elasticsearch를 남긴 채로 별명으로 작성했으므로, 아무것도 이미지가 표시되어 있지 않은 것 같습니다.
아래와 같이 이름을 어긋나지 않으면 기존의 물건을 덮어쓰기 때문에 주의가 필요.
elasticsearch_custamize.pyclass ElasticsearchCustom(BaseElasticSearch):
@classmethod
def name(cls):
return 'ElasticsearchCustom'
register(ElasticsearchCustom)
Elasticsearch 연결 정보를 입력하여 SAVE를 수행합니다.
이번에 추가한 elasticsearch_custamize.py에서 설정 정보를 정의하게 됩니다만, 이번은 기존의 elasticsearch.py의 확장판이기 때문에, 접속 정의 정보는 기존의 Elasticsearch와 같이 등록합니다.
Query에서 등록한 Data Source를 사용하여 쿼리를 작성하고 실행
실행하는 쿼리는 아래와 같다.
{
"index": "インデックス名",
"size": 100,
"aggs": {
"1st": {
"terms": {
"field": "LogDate"
},
"aggs": {
"2nd": {
"terms": {
"field": "SectionName"
}
}
}
}
}
}
elasticsearch_custamize.py로 처리한 결과가 Table에 표시된다.
1st
2nd
1st_doc_count
2nd_doc_count
2019년 10월 29일
시스템부
60
10
2019년 10월 29일
인사부
60
20
2019년 10월 29일
총무부
60
30
2019년 10월 30일
시스템부
600
100
2019년 10월 30일
인사부
600
200
2019년 10월 30일
총무부
600
300
이 표 결과를 얻으면 그래프를 만들 수 있습니다!
만약 이것으로 커버할 수 없는 요건이 왔을 때, 다양한 쿼리 결과의 JSON 패턴을 가미해, 프로그램을 복잡화시키는 것보다는, QueryResult의 합치기술로 실현하는 것도 손일까라고.
Reference
이 문제에 관하여(Redash의 QueryRunner 확장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/J-SHK/items/e270fc797b630a182985
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
environment:
REDASH_ADDITIONAL_QUERY_RUNNERS: "redash.query_runner.elasticsearch_custamize"
redash/query_runner
elasticsearch.py
oracle.py
pg.py
・
・
elasticsearch_custamize.py
・
redash
/setup
docker-compose.yml ← リリース版用
Dockerfile
docker-compose.yml ← 開発用
New Data Source에서 추가한 Data Source를 선택합니다.
올바르게 로드하는 경우 데이터 소스 목록에 표시됩니다.
※Data Source에 대한 이미지가 별도로 관리되고 있는 것 같고, 이번은 기존의 Elasticsearch를 남긴 채로 별명으로 작성했으므로, 아무것도 이미지가 표시되어 있지 않은 것 같습니다.
아래와 같이 이름을 어긋나지 않으면 기존의 물건을 덮어쓰기 때문에 주의가 필요.
elasticsearch_custamize.py
class ElasticsearchCustom(BaseElasticSearch):
@classmethod
def name(cls):
return 'ElasticsearchCustom'
register(ElasticsearchCustom)
Elasticsearch 연결 정보를 입력하여 SAVE를 수행합니다.
이번에 추가한 elasticsearch_custamize.py에서 설정 정보를 정의하게 됩니다만, 이번은 기존의 elasticsearch.py의 확장판이기 때문에, 접속 정의 정보는 기존의 Elasticsearch와 같이 등록합니다.
Query에서 등록한 Data Source를 사용하여 쿼리를 작성하고 실행
실행하는 쿼리는 아래와 같다.
{
"index": "インデックス名",
"size": 100,
"aggs": {
"1st": {
"terms": {
"field": "LogDate"
},
"aggs": {
"2nd": {
"terms": {
"field": "SectionName"
}
}
}
}
}
}
elasticsearch_custamize.py로 처리한 결과가 Table에 표시된다.
1st
2nd
1st_doc_count
2nd_doc_count
2019년 10월 29일
시스템부
60
10
2019년 10월 29일
인사부
60
20
2019년 10월 29일
총무부
60
30
2019년 10월 30일
시스템부
600
100
2019년 10월 30일
인사부
600
200
2019년 10월 30일
총무부
600
300
이 표 결과를 얻으면 그래프를 만들 수 있습니다!
만약 이것으로 커버할 수 없는 요건이 왔을 때, 다양한 쿼리 결과의 JSON 패턴을 가미해, 프로그램을 복잡화시키는 것보다는, QueryResult의 합치기술로 실현하는 것도 손일까라고.
Reference
이 문제에 관하여(Redash의 QueryRunner 확장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/J-SHK/items/e270fc797b630a182985텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)