Git Product home page Git Product logo

metatron-app / metatron-discovery Goto Github PK

View Code? Open in Web Editor NEW
431.0 23.0 108.0 95.58 MB

Powerful & Easy way for big data discovery

Home Page: https://metatron.app

License: Apache License 2.0

Shell 0.04% TypeScript 28.75% JavaScript 20.16% HTML 11.82% CSS 12.21% ANTLR 0.02% Java 26.96% R 0.01% Python 0.01% TSQL 0.04% Dockerfile 0.01%
business-intelligence big-data-analytics apache-druid self-service druid data-visualization data-analytics dashboard sql-editor chart

metatron-discovery's Introduction

metatron-discovery-logo


Metatron Discovery is an end-to-end big data self discovery solution. To learn more about it, visit our web site. Check our blog for upcoming events and development news. Also if you got stuck when using Metatron Discovery, please leave your problem on our user forum.

Strengths

  • Able to process HUGE data sets super FAST, powered by (optimized) Apache Druid.
  • Single solution for data analytics from easy data preparation to fast visualization.
  • Easy data analytics for everyone.

Key Features

Metatron provides:

  • Interactive dashboards with numerous preloaded charts.
  • Query(SQL) based data exploration and GUI based data wrangling.
  • Various data source connections (e.g. DBs, HIVE, or Kafka streams).
  • Geo data analysis with geospatial operations.
  • Job and data usage monitoring.
  • Metadata management.
  • 3rd party data analytics tool integration(e.g. Apache Zeppelin).
  • Fine grain access control of users and workspaces.
  • Overcomes Druid weaknesses(e.g. no data join function) without performance degradation using Metatron optimized Druid.
  • Full API support, enabling easy integration into your environment/software.
  • Multiple languages according to browser setting(Currently supporting English, Korean, Chinese).
  • Available on AWS, Azure('19.3Q).
  • Docker support for distributed version deploy('19.3Q).
  • Monitoring Metatron engine performance('19.3Q).

Screenshots

Create Dashboards


Create Charts


Analyze with Geospatial Data


Use Datasources


Manage Datasources


Manage Engine Performance (Coming Soon)


Connect Database


Prepare Origin Data


Query Monitoring


SQL in Druid


Installation

  • Only the Korean description is available for now.

Requirements

  • MacOS / Linux (Redhat, CentOS)
  • JDK 1.8
  • Druid customized version for Metatron
     $ start-single.sh | stop-single.sh 
  • (Optional) Apache Maven 3.3+ for building the project

Install Metatron Discovery

There is two way to get the running binary file.

  • Directly download the final binary file from this link

  • Or, build source code from this repository as shown below:

    • Clone this project.
    $ git clone https://github.com/metatron-app/metatron-discovery.git
    • Build through Maven 3.3+.
    $ mvn clean install -DskipTests

    Building the whole project takes some time especially for the "discovery-frontend". Please wait a few minutes.

    If the build succeeds, you can find an archive file under "discovery-distribution/target"

Start up the Metatron Discovery

Untar the archive binary file of Metatron Discovery.

$ tar zxf metatron-discovery-{VERSION}-{TIMESTAMP}-bin.tar.gz

Configuration (optional)

Metatron Discovery loads its configuration from the files under “/conf” directory by default. We already wrote some frequent configurations in the template files. For your own configuration of Metatron Discovery application, you should create a new configuration file with reference to the pre-distributed template file as belows. In the generated setting file, refer to the configuration guide and specify detailed setting information.

$ cp ./conf/application-config.templete.yaml ./conf/application-config.yaml

To configure the environment in which the server is running, you need to configure server memory or classpath settings by editing the “metatron-env.sh” file.

$ cp ./conf/metatron-env.sh.templete ./conf/metatron-env.sh

For example, if you want to use MySQL and increase the memory, you should set it as below. See the comments in the file “metatron-env.sh.templete” for more information.

export METATRON_JAVA_OPTS=-Xms4g -Xmx4g
export METATRON_DB_TYPE=mysql

Run Metatron Discovery

Run with the following command.

$ bin/metatron.sh start

Running options are provided as well.

$ bin/metatron.sh [--config=directory] [--management] [--debug=port] {start|stop|restart|status}

To access Metatron Discovery, go to http://localhost:8180. (The default admin user account is provided as Username: admin, PW: admin.)

Using REST API

Metatron support RESTful APIs. Please refer to the following details how to using the REST API

Dockerize Metatron Discovery

After completing the build, you can create a docker image.

$ cd discovery-distribution
$ docker build -t {image name}:{image tag} -f docker/Dockerfile

❗ Note that there must be only one package in the target directory.

Problems & Suggestions

This project welcomes contributions and suggestions. If you encounter any bugs or want to request new features, feel free to open an GitHub Issue in the repo so that the community can find resolutions for it. Or reports bug to our discussion forum. Although, please check before you raise an issue. That is please make sure someone else hasn’t already created an issue for the same topic.

Question

Need help using Metatron Discovery? Check our FAQs or ask away on our discussion forum! Our fellow community members will be glad to help you out! Or you can check out our user manual on our website as well.

License

Metatron Discovery is available under the Apache License V2.

metatron-discovery's People

Contributors

9bow avatar alchan-lee avatar anniehwang avatar babokim avatar brandon-wonjune avatar choonglee170924 avatar dave-taeho avatar dependabot[bot] avatar eltriny avatar eltriny-bot avatar i1befree avatar imsaaks avatar joohokim1 avatar juheeko9 avatar kaypark-sk avatar kaypark-skt avatar kuckjwi0928 avatar kyungtaak avatar mh0203 avatar minhyun2 avatar ninezero90hy avatar nowone123 avatar paigechoi avatar sadcomm avatar sang-hee-lee avatar sting009 avatar thinkcsww avatar ucrystal avatar ufoscw avatar yooyoungmo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

metatron-discovery's Issues

Introduce Map Analysis

Is your feature request related to a problem? Please describe.

  • We support Map View that supported 1.0 version in the past.
  • First, we support point type layer, and we will support layer of shape type in the future.

Describe the solution you'd like

  • The map view is represented within the widget at the same level as the chart.
  • The point layer in the map view consists of three types of layer types. (point/heatmap/hexagon)
    image
  • You can configure the layers on the map by adjusting the detail options for each type.
  • The generated map view can interact with other charts in the dashboard.
  • The feature information that represents the layer is composed of geojson format, and it uses geoserver.
    image

Describe alternatives you've considered
<N/A>

Additional context
<N/A>

Datasource detail view of workspace doesn't work

Describe the bug
워크스페이스에서 데이터소스 보기 Pane 에서 특정 데이터소스를 선택하고 상세보기를 누르면 javascript 에러가 발생함

To Reproduce
Steps to reproduce the behavior:

  1. Admin 으로 login 해서 개인 워크스페이스에서 데이터소스 보기 pane 을 선택한다.
  2. 첫번째 데이터소스 보기를 선택한다.
  3. 상세 보기를 선택한다.
  4. Javascript 오류가 발생하면서 브라우져가 먹통이 됨

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
datasource-detailview-error

Desktop (please complete the following information):
Demo site

Additional context
다음과 같은 스크립트 오류 발생

ERROR TypeError: Cannot read property 'instance' of undefined
at Object.dn (vendor.eed11a3ba70949cd4f9a.bundle.js:1)
at Object.handleEvent (/resource/0.222cdc2ca9f966e93183.chunk.js:1)
at Object.M [as handleEvent] (vendor.eed11a3ba70949cd4f9a.bundle.js:1)
at Object.handleEvent (vendor.eed11a3ba70949cd4f9a.bundle.js:1)
at it (vendor.eed11a3ba70949cd4f9a.bundle.js:1)
at vendor.eed11a3ba70949cd4f9a.bundle.js:1
at HTMLDocument. (vendor.eed11a3ba70949cd4f9a.bundle.js:1)
at e.invokeTask (vendor.eed11a3ba70949cd4f9a.bundle.js:1)
at Object.onInvokeTask (vendor.eed11a3ba70949cd4f9a.bundle.js:1)
at e.invokeTask (vendor.eed11a3ba70949cd4f9a.bundle.js:1)
M @ vendor.eed11a3ba70949cd4f9a.bundle.js:1
8vendor.eed11a3ba70949cd4f9a.bundle.js:1 ERROR Error: No provider for l!
at k (vendor.eed11a3ba70949cd4f9a.bundle.js:1)
at T (vendor.eed11a3ba70949cd4f9a.bundle.js:1)
at e._throwOrNull (vendor.eed11a3ba70949cd4f9a.bundle.js:1)
at e._getByKeyDefault (vendor.eed11a3ba70949cd4f9a.bundle.js:1)
at e._getByKey (vendor.eed11a3ba70949cd4f9a.bundle.js:1)
at e.get (vendor.eed11a3ba70949cd4f9a.bundle.js:1)
at Vt (vendor.eed11a3ba70949cd4f9a.bundle.js:1)
at e.get (vendor.eed11a3ba70949cd4f9a.bundle.js:1)
at Vt (vendor.eed11a3ba70949cd4f9a.bundle.js:1)
at e.get (vendor.eed11a3ba70949cd4f9a.bundle.js:1)

Cannot create a FILE type snapshot

Describe the bug
FILE type snapshot이 나오지 않습니다.

To Reproduce
Steps to reproduce the behavior:

  1. CSV dataset 생성
  2. Dataflow 생성 및 wrangled dataset 생성
  3. FILE type snapshot 생성
  4. Success라고 나오지만, 실제로 클릭해보면 내용을 읽을 수 없다는 exception이 발생함

Expected behavior
Snapshot이 잘 생성되고, 내용을 읽을 수 있어야 함

Desktop (please complete the following information):

  • OS: MacOS
  • Browser: Chrome
  • Version: 68.0.3440.106

Show release version number in lnb area

Is your feature request related to a problem? Please describe.
설치후, 릴리즈 버젼에 대한 정보를 알수가 없어 배포시 UI를 통해 확인할수 있는 방법이 없습니다.

Describe the solution you'd like
LNB 영역 하단에 버젼명을 표시합니다.
lnb_version

Describe alternatives you've considered
None.

Additional context

Need to check vulnerable link datasource in demo site

Describe the bug
데모 사이트에서 링크형 데이터소스 동작하지 않음. 수정되면 잠시 동작하다가, 항상 잘 동작하지 않는 문제가 있음(현재 Hive 에서만 발생하는 것으로 보임).

To Reproduce
현재 노출되 있는 데이터소스인 "link" datasource 를 이용할 경우 동작하지 않음.
2/2 단계에서 더 이상 진행 되지 않으며 아래와 같은 메시지만 반복적으로 출력됨.

2018-08-17 10:08:45.526 DEBUG [-] [BulkLoad-null-0] a.m.d.domain.engine.EngineLoadService : Check temporary datasource [2] : TEMP-fba34c06-969e-4703-82a9-3dd24ee031ef
2018-08-17 10:08:45.526 DEBUG [-] [BulkLoad-null-0] a.m.d.d.engine.AbstractEngineRepository : Request to engine : GET, http://metatron-hadoop-03:8082/druid/v2/datasources/local/test_arcts_zgvnb/coverage > {}
2018-08-17 10:08:45.529 DEBUG [-] [BulkLoad-null-0] a.m.d.domain.engine.EngineLoadService : load Datasource info :
2018-08-17 10:08:45.529 DEBUG [-] [BulkLoad-null-0] a.m.d.domain.engine.EngineLoadService : Send Progress Topic : /topic/datasources/TEMP-3862119c-b50a-4437-8026-62441e5eedcf/progress, ProgressResponse{progress=13, message='PROGRESS_LOAD_TEMP_DATASOURCE'}

워크벤치에서 Hive 연결에 대해 차트 그리기를 해도 동일한 현상이 발생하는 것을 확인

2018-08-17 10:29:00.225 DEBUG [-] [http-nio-8080-exec-8] a.m.d.d.w.util.WorkbenchDataSourceUtils : datasource Destroy : b59606b3-6a75-4bef-83de-8b67d6d17813 - d12n1s2l
app.metatron.discovery.prep.parser.exception.UnknownServerException: java.io.IOException: 연결이 상대편에 의해 끊어짐
at app.metatron.discovery.prep.parser.exception.GlobalExceptionHandler.handleAll(GlobalExceptionHandler.java:147)
at app.metatron.discovery.prep.parser.exception.GlobalExceptionHandler.exceptionHandler(GlobalExceptionHandler.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
Expected behavior

Screenshots

Desktop (please complete the following information):
On demo site

Additional context

UI code requests snapshot details over and over

Describe the bug
데이터플로우 화면에서 스냅샷 리스트를 끊임없이 불러오는 문제

  • 스냅샷 탭이 활성화되어있지 않아도 스냅샷 리스트를 끊임없이 불러오는 문제
  • 화면을 벗어나도 스냅샷 리스트를 불러오는 문제

To Reproduce
Steps to reproduce the behavior:

1 . 데이터셋 생성 > 데이터플로우 생성 > wrangled dataset 생성 > wrangled dataset 편집 > 스냅샷 생성
2 . 스냅샷탭 활성화 > 룰 리스트 탭 활성화
3 . see error

Expected behavior
스냅샷 탭이 활성화되어있지 않으면 스냅샷 리스트를 불러오는 동작 Stop

Screenshots

Desktop (please complete the following information):

Additional context

Add recommendation filter configuration in datasource detail page

Is your feature request related to a problem? Please describe.

  • 기존에 데이터소스 생성시에만 설정되는 Recommendation Filter 필터에 대한 사용성이 현저히 떨어저지고 생성 후 수정기능이 없어 사용이 불편합니다.

Describe the solution you'd like
2018-08-28 11 08 18
2018-08-28 11 08 30

  • Recommendation Filter 정보가 상세페이지로 이동시키고 이에 대한 수정기능을 제공합니다.

Describe alternatives you've considered

Additional context

  • 관련기능 : Linked Datasource 사용 / 대시보드 필터 적용

Incorrect spell of Zeppelin in README file.

Describe the bug
README 파일에 Apache Zeppline 으로 표기 된 것을 Apache Zepplin 으로 바꿔야 함

To Reproduce

Expected behavior

Screenshots

Desktop (please complete the following information):

Additional context

Error editing text widget

Describe the bug
텍스트 위젯 편집시 일부 기능 오류가 발생합니다.

  • 밑줄 적용 시, 색상 reset
  • 인덴트 적용 후 취소 시 (Remove Indent) 폰트 reset
  • Add Link 기능에서, Link Text 적용 안됨

To Reproduce
Steps to reproduce the behavior:

  1. 워크북 생성 > 대시보드 생성 > 텍스트 위젯 생성
  2. 텍스트 위젯 에디터 편집 (상단 설명 참조)
  3. see error

Expected behavior
색상이나, 폰트 설정이 리셋되지 않고 정상 동작 해야하며, Add Link 기능 적용되어야합니다.

Screenshots
동영상 파일은 내부 관리 이슈 METATRON-1121 내 참조

Desktop (please complete the following information):

  • OS: Mac OS High Sierra (10.13.6)
  • Browser : Chrome
  • Version 68.0.3440.106

Additional context

Incorrect count of dimension filter items.

Describe the bug

  • 우측 필터 패널에 차원값 표시 항목을 나열시 표시하는 개수가 필터 편집 화면과 맞지 않습니다.

To Reproduce
Steps to reproduce the behavior:

  1. 워크북/대시보드 생성 후, 차트 위젯을 등록합니다.
  2. 10개의 항목이 넘는 차원값을 필터로 등록합니다. (ex. sales.City)
  3. 필터 우 상단에 추가 메뉴 중 필터 편집을 선택합니다.
  4. 필터 편집에서 상단 "filtering" 아이콘을 클릭하고 "Limitation" 항목에 TOP, 개수는 10 을 선택후 "적용" 버튼을 통해 10개의 항목만 나타나도록 합니다. 그 이후 우측 필터 패널의 개수를 확인합니다.
  5. See screenshot

Expected behavior

  • 필터링된 아이템 개수가 일치해야합니다.

Screenshots
image

Desktop (please complete the following information):
<N/A>

Additional context

  • 필터 편집 상단 아이콘 배열에 문제가 있습니다. 해당 사항도 함께 검토하여 주세요.

Update README page

Is your feature request related to a problem? Please describe.
Github 리포지토리 최초 페이지에 대한 업데이트가 필요합니다.

Describe the solution you'd like
최초 페이지 구성에 대해 정의후 README.md 파일을 구성해주세요.

Describe alternatives you've considered

Additional context

Encrypt/Decrypt Connection password

Is your feature request related to a problem? Please describe.

  1. 소스타입이 데이터베이스인 데이터 소스 상세 조회시 Connection 비밀번호 노출됨.
  2. Connection 상세조회시 Connection 비밀번호 노출됨.

Describe the solution you'd like

  1. 패스워드가 필요한 경우 Projection 추가하여 기본적으로 패스워드 노출하지 않음.
  2. Connection 상세조회시 암호화된 비밀번호를 통해 기능 수행

Describe alternatives you've considered
None.

Additional context
None.

When I change crossing point value of area-line chart, measure based color distribution doesn't work

Describe the bug
라인 차트로 차트를 그린 후에 색상 모드를 measure 로 하고 이 후 crossing point 값을 최저값에 근접하게 그리면 전체 색깔이 지정된 값 범위에 맞게 동작하지 않음.
추가적으로 areachart 에서 색 분배시 최소값과 최대값을 기준으로 색 분배가 맞는지 고려가 필요함. 개인적인 생각으로 최소값은 Crossing line 값과 최소값 중 작은 것을 선택하는 것이 맞을 것 같음.

To Reproduce
Steps to reproduce the behavior:
다음 url 참조 : https://discovery.metatron.app/app/v2/workbook/67cf1062-3fa8-453f-8be8-a737c7e67994

  1. 라인차트로 년도별 Winner_s_avg_speed 의 평균값을 정의.
  2. 색상을 measure 모드로 변경
  3. Crossing point 를 20으로 변경
  4. 스크린샷 확인

Expected behavior
색은 정의된 값의 범위에 맞게 처리되야 한다.

Screenshots
linechart_measure

Desktop (please complete the following information):
demo site

Additional context
Add any other context about the problem here.

Make snapshot generating method thread-safe.

Is your feature request related to a problem? Please describe.
스냅샷 생성 기능에 thread-safe 하지 못한 부분이 있어 동시에 여러개의 스냅샷을 생성하면 올바른 결과를 만들어내지 못함.

Describe the solution you'd like
TeddyExcutor.java 내의 snapshot 생성 관련 코드들을 thread-safe하게 변경.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
SSID와 관련된 변수들을 hash-map 형태로 관리하여 새로운 스냅샷을 생성할 때 변수들이 뒤섞이는 것을 방지.

Can not make preparation snapshot in dataflow, before open it at least once.

Describe the bug
프리퍼레이션 화면에서 스냅샷을 생성하려고 시도하면 dp.alert.no.dataset 에러 발생.

To Reproduce
Steps to reproduce the behavior:

  1. 서버를 재가동한다.
    2.데이터 플로우 화면에서 임의의 데이터 셋을 선택한다.
    3.우측 메뉴에서 snapshot 생성을 선택한다.
    4.데이터셋 편집화면으로 들어가서 Grid view를 확인한 뒤에 재시도 하면 에러가 발생하지 않음.

Expected behavior
msg.dp.alet.no.dataset 에러 발생

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: Mac OS
  • Browser: Chrome

Additional context
Add any other context about the problem here.

Add a guide to connect muliti-datasources.

Is your feature request related to a problem? Please describe.

  • 대다수의 사용자가 대시보드 생성시 멀티데이터 소스를 연결하는 과정에 어려움을 느낍니다.

Describe the solution you'd like

  • 멀티데이터 소스를 연결하는 과정에 대한 스크린 가이드를 추가 합니다.
    screen_guide

Describe alternatives you've considered

  • 매번 나타나지 않도록 별도의 정책이 필요합니다.

Additional context

Instant cleansing for preparation

Is your feature request related to a problem? Please describe.
Data source를 만들 때, (druid ingestion시) 즉석으로 data cleansing을 하고자 하는 요구가 있습니다.

Describe the solution you'd like
Dataprep 탭으로 이동하는 것이 아니라, 팝업을 띄워서, 처리하도록 지원할 예정입니다.
이를 위해, 이름없는 temporary dataset과 dataflow, snapshot을 만들고, 이것을 ingestion과 smooth하게 잇는 작업이 필요합니다.

Describe alternatives you've considered

Additional context
자세한 기획은 차후에 회의를 진행하여 정해질 것입니다.

The sankey chart is not displayed on certain datasources.

Describe the bug
특정 데이터 소스에서 샌키 차트가 제대로 표시되지 않습니다.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Workbook, Create dashboard.
  2. Select datasource "tour de france"
  3. Create chart widget.
  4. Put 2 dimension and 1 measure to on shelf
  5. See error

Expected behavior
Sankey 차트가 조건에 의해 정상 표시되어야 합니다.

Screenshots
image

Desktop (please complete the following information):

  • OS: Max OS
  • Browser : Chrome
  • Version : 68.0

Additional context

  • Network Chart 에서도 동일한 현상이 발생합니다.
  • 기본 데이터 셋인 Sales 데이터소스에서는 발생하지 않습니다.
    image

workbench show query log for hive connection

Is your feature request related to a problem? Please describe.
need query progress and log.

Describe the solution you'd like

requirement

add property to hive-site.xml

<!-- operation log -->
 <property>
  <name>hive.async.log.enabled</name>
  <value>false</value>
 </property>

guide for client

  1. subscribe via websockect (already developed)

/user/queue/workbench/{workbenchId}

  1. message received 4 type command
CONNECT : already developed
DISCONNECT : already developed
LOG : relay log and progress
DONE : message when query executed.
  1. message structure (command : LOG)
{
  "command" : "LOG",   //command
  "queryIndex" : 0,    //order of query when execute queries.
  "log" : [            //string array of log from hive
     "Hive Log...",
     "Hive Log..."
   ],
   "progress" : {       //Progress Information
     "progress" : 60,   //completed progress % (0~100)
     "message" : "Map 1: 0/1	Map 4: 0(+1)/1	Reducer 2: 0/2	Reducer 3: 0/1"
   }
}
  1. message structure (command : DONE)
{
    "command" : "DONE",    //command
    "queryIndex" : 0      //order of query when execute queries.
}

Describe alternatives you've considered
N/A

Additional context
N/A

Fail to download original data

Describe the bug
원본데이터(차트/데이터소스 보기내) 다운로드 수행시 다운로드가 되지 않고 로딩이미지만 발생합니다.

To Reproduce
Steps to reproduce the behavior:

  1. 워크북 + 대시보드 생성후, 임의의 차트 위젯을 생성하고, 대시보드를 구성합니다.
  2. 대시보드 열람 모드내 차트 위젯 마우스 오버시 나타나는 상단 메뉴중 "Save data table" 아이콘 클릭
  3. 지속적인 로딩이미지가 생성됩니다.

Expected behavior

  • 오류가 발생시 로딩이미지가 지속적으로 표시되는게 아닌 에러 메시지가 나타나야 합니니다.
  • 데이터가 정상적으로 다운로드 됩니다.

Screenshots

Desktop (please complete the following information):

Additional context

Improve data connection load/registration

Is your feature request related to a problem? Please describe.

  • 기존 데이터 커넥션 타입이 적재/워크벤치 용도로 나뉘어져 있어 동일한 연결임에도 2개씩 관리하는 어려움이 있습니다.
  • 타입이 통합되면서 Security, Permission 부분을 하나의 화면에서 등록 할수 있도록 UI 처리가 필요합니다.

Describe the solution you'd like

  • 커넥션 타입 타입 통합 및 등록 화면 UX 개선
    image
    image

  • 커넥션 등록 화면 변경에 따른 데이터 적재 단계내 커넥션 로드 화면 UX 개선
    image

  • 커넥션 목록 화면내 타입관련 처리 제거

Describe alternatives you've considered
None.

Additional context

  • 커넥션 화면을 사용하는 데이터 적재 관련 화면/워크벤치 기능에 대한 전수 점검이 필요합니다.

Remote agent to ingest internal database.

Is your feature request related to a problem? Please describe.
DB data를 ingestion 할때 DB가 metatron가 다른 네트워크 환경에 있는 경우 metatron에서 접속할 수 없는 경우가 대부분이다. 이 경우 DB 서버와 동일한 네트워크 구성에 있는 서버에 agent 를 실행하고 그 agent가 데이터를 전송하는 방식으로 ingestion 구성을 할 수 있다.

Describe the solution you'd like
metatron_remote_agent

  • 개발 필요 사항
    • Remote Agent Daemon
    • Metatron DB Ingestion 구성 시 Type에 Remote Agent 추가
    • Metatron DB Ingestion 화면에서 Remote Agent 설정 화면 추가
      • Remote Agent IP, HOST, 인증을 위한 Key 입력 화면 추가

Describe alternatives you've considered
None.

Additional context
None.

Unknown server error occurred when using prediction line

Describe the bug
시계열 차트에서 Prediction line 활성화 시 서버쪽에서 Unknown server error 발생함

To Reproduce
특정한 케이스에 발생한다고 보며 하단의 Prediction 시 오류 설정을 확인해 볼 필요가 있음.

  1. Go to 'https://discovery.metatron.app/app/v2/workbook/67cf1062-3fa8-453f-8be8-a737c7e67994'
  2. Winner's average speed 차트에서 Prediction line 활성화
  3. 하단의 스크린샷처럼 예측선이 나오지 않으며 서버로부터 Unknown server error 라는 메시지가 발생함

Expected behavior
예측선이 그려져야 함

Screenshots
prediction-line-error

Desktop (please complete the following information):
https://discovery.metatron.app/app/v2/workbook/67cf1062-3fa8-453f-8be8-a737c7e67994

Additional context
Server log 참조
app.metatron.discovery.prep.parser.exception.UnknownServerException
at app.metatron.discovery.prep.parser.exception.GlobalExceptionHandler.handleAll(GlobalExceptionHandler.java:147)
at sun.reflect.GeneratedMethodAccessor2133.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:384)
at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:59)
at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:136)
at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:76)
at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1222)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1034)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:984)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at app.metatron.discovery.prep.parser.web.CommonLocalVariableFilter.doFilter(CommonLocalVariableFilter.java:58)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at app.metatron.discovery.prep.parser.web.LogbackMdcFilter.doFilter(LogbackMdcFilter.java:59)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:176)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:167)
at org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:80)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at app.metatron.discovery.domain.datasource.data.result.PivotResultFormat.getAnalysisResult(PivotResultFormat.java:351)
at app.metatron.discovery.domain.datasource.data.result.PivotResultFormat.toResultSetByMatrixType(PivotResultFormat.java:291)
at app.metatron.discovery.domain.datasource.data.result.PivotResultFormat.makeResult(PivotResultFormat.java:197)
at app.metatron.discovery.domain.datasource.data.result.ChartResultFormat.makeResult(ChartResultFormat.java:126)
at app.metatron.discovery.domain.engine.EngineQueryService.search(EngineQueryService.java:286)
at app.metatron.discovery.domain.engine.EngineQueryService$$FastClassBySpringCGLIB$$f8f94d0e.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:85)
at app.metatron.discovery.domain.engine.QueryServiceAspect.queryProcessing(QueryServiceAspect.java:90)
at sun.reflect.GeneratedMethodAccessor434.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:629)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:618)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)
at app.metatron.discovery.domain.engine.EngineQueryService$$EnhancerBySpringCGLIB$$e9a314ca.search()
at app.metatron.discovery.domain.datasource.data.DataQueryController.searchQuery(DataQueryController.java:108)
at sun.reflect.GeneratedMethodAccessor766.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
... 88 more

Do not apply to the widget panel after adding a text widget

Describe the bug

  • 텍스트 위젯 생성시 택스트 위젯 패널에 적용여부가 표시 되지 않습니다.
  • 다른 위젯 패널을 조회하고 텍스트 위젯 패널에 복귀하면 표시가됩니다.

To Reproduce
Steps to reproduce the behavior:

  1. 대시보드 편집화면으로 이동
  2. 상단 텍스트 위젯 생성 버튼 클릭 (텍스트 위젯 패널내 "+" 버튼도 동일현상)
  3. 텍스트 위젯 생성 후, 생성된 위젯 정보가 위젯 패널에 표시가 되어 있지 않음

Expected behavior

  • 텍스트 위젯 생성시 택스트 위젯 패널에 표시가 되어야합니다.

Screenshots
image

Desktop (please complete the following information):

  • OS: Mac OS High Sierra (10.13.6)
  • Browser : Chrome
  • Version 68.0.3440.106

Additional context

Remove unnecessary message on list of datasource

Describe the bug
대시보드 생성 중 데이터 소스를 선택하는 목록 화면에 불필요한 라벨이 존재하여 제거가 필요합니다.

To Reproduce
Steps to reproduce the behavior:

  1. 워크북 생성, 대시보드 생성
  2. Click on 'add Datasource'
  3. 데이터 소스 목록 상단에 "ingestion is limited to 1 million rows" 표시가 되어 있음

Expected behavior
데이터 소스 목록 상단에 "ingestion is limited to 1 million rows" 표시 제거

Screenshots

Desktop (please complete the following information):

  • OS: Mac OS High Sierra (10.13.6)
  • Browser : Chrome
  • Version 68.0.3440.106

Additional context

Edit/update rule command in the middle of the rule list

Is your feature request related to a problem? Please describe.
현재, rule list의 끝에서만 add/edit/update를 할 수 있게 되어있습니다.
그런데, 일단 본 이슈에서는 edit/update에 대해서만 처리하고자 합니다. (UI 이슈)

Describe the solution you'd like
이제 중간에서도 add/edit/update를 할 수 있게 하고자 합니다.

Additional context
기존에 rule list 끝에서만 가능하게 했던 이유는 단지 구현의 단순함 때문이었습니다.
작업도 길어지고, 중간에 release branch도 바뀌어서,
너무 많은 conflict가 예상되기 때문에, add까지 처리하지 못하고, 일단 이슈를 merge하고 닫고자 합니다.
서버 구현은 add까지 모두 되어있습니다.

Incorrect color distribution in gradient mode

Describe the bug
값 범위가 작은 경우 9색짜리 Gradient 로 했을 때 색 배분을 제대로 못하는 현상 발생

To Reproduce
다음 URL 참조
https://discovery.metatron.app/app/v2/workbook/57cad565-7616-40ba-a81d-a92fece63d99

Expected behavior
값 범위가 0 ~ 4 일 때 9색 Gradient 를 하면 0.4 씩으로 균등 배분을 기본으로 해주는 것이 맞을 것 같음
현재 테스트 결과 정수가 아닌 소수를 넣어도 잘 동작하고 있음

Screenshots
incorrect_color_distribution

Desktop (please complete the following information):
demo site

Additional context

Adjust loading area on dashboard

Is your feature request related to a problem? Please describe.

  • 워크북 내 대시보드 화면 로드시 전체 화면이 가려져 로드가 되기 때문에 로드 중 다른 대시 보드로 이동이 불편합니다.
  • 현재 데이터 로드 사이즈가 큰 경우와 같이 대시보드 로드가 오래 걸릴 경우 취소할수 없는 구조입니다.

Describe the solution you'd like

  • 먼저 대시보드 로드시 좌측 대시보드 목록 영역과 대시보드 영역으로 로드 영역을 분리하여 이동시 불편함을 먼저 해소합니다.
  • 대시보드 취소 및 로드 관련 추가 검토 사항은 추후에 적용합니다.

Describe alternatives you've considered
None.

Additional context
None.

Allow rule manipulation regardless of rule index

Is your feature request related to a problem? Please describe.
현재는 룰 리스트에 마지막 룰만 편집과 삭제할 수 있습니다.
이제는 모든 룰을 편집과 삭제할 수 있게 수정합니다.

Describe the solution you'd like
rule idx를 서버에 전달하여 룰 순서와 상관 없이 모든 룰을 편집, 삭제할 수 있게 수정합니다.

Describe alternatives you've considered

Additional context

Add "maximum categories" property for pie chart

Is your feature request related to a problem? Please describe.
파이차트 내에서 표시할 항목이 많아 질경우 기존에는 2% 미만의 항목은 "other" 처리를 진행하였으나, 이에 대한 기준이 모호하여 개선이 필요합니다.

Describe the solution you'd like
기본은 모두 표시하는 것으로 하고, 사용자가 최대 표시할 개수를 지정하는 방향으로 진행합니다.
image

Describe alternatives you've considered
<N/A>

Additional context
<N/A>

Improved chart y axis properties

Is your feature request related to a problem? Please describe.

  • 기존 "auto scale" 용어가 혼란스러우며, 동작이 제대로 되지 않은 문제가 있습니다.
  • 축교자점과 축 스케일 설정간 사용자 액션에 대해 명확하지 않은 부분이 있어 재검토가 필요합니다.

Describe the solution you'd like

  • "auto scale" 용어 fmf '데이터 범위로 축 고정 (Fit to Data Scale)'로 변경, 이에 따른 차트 동작 재 검토
  • 배타적인 3가지(축범위 설정, 교차점, 로그 스케일) 옵션에 대한 동작 UX 재검토
    : 축 교자첨 설정은 기본값이 '0'이며, 별도 ON/OFF UI없이 사용자가 값을 입력하면 '설정 활성화' + '값 입력'이 동시에 처리되는 형태 (task의 사용 depth를 줄이려는 취지)
    : 배타적으로 동작한다는 UX를 명확하게 전달하기 위해서 ON/OFF 옵션 추가 (하나의 옵션이 활성화 시, 나머지 2개의 옵션은 비활성화 처리)

Describe alternatives you've considered

  • Line/Bar/Scatter/Combine Chart 적용 검토

Additional context

Provide status for creating snapshots

Is your feature request related to a problem? Please describe.

  • 스냅샷을 생성 후 상태에 따라 다른 UI 가 필요합니다

Describe the solution you'd like

  • 스냅샷이 생성이 완료된 경우 : 통계 서머리 (Valid, mismatched, missing)와 그리드를 보여줍니다.
  • 스냅샷 생성이 실패한 경우 : 실패 에러 로그를 보여줍니다.
  • 스냅샷 생성 중 일 경우 : 프로그래스 바를 보여주고 취소할 수 있습니다.

Describe alternatives you've considered

Additional context
스냅샷 리스트에서도 진행 중인 스냅샷을 볼 수 있습니다

Set default locale for Timestamp format data as US-Eng

Is your feature request related to a problem? Please describe.
timestamp 데이터의 locale 설정이 서버의 언어설정을 따라가기 때문에 서버 언어가 한글인 경우 Mon, Tue 등을 처리하지 못함.

Describe the solution you'd like
서버의 언어 설정과 관계없이 기본 locale을 영어로 설정.

Describe alternatives you've considered

Additional context
String을 TimeStamp로 변경할 때, TimeStamp를 String으로 변경할 때 모두 Locale.English 를 적용하여 처리.

Add window functions on data preparation

Is your feature request related to a problem? Please describe.
Data Preparation에서 Window Function들을 추가로 지원합니다.

Describe the solution you'd like
'Window' Rule을 새롭게 추가하고, 필요한 기능들은 Fcuntion의 형태로 지원합니다.

Describe alternatives you've considered

Additional context
row_number, rank, rolling_sum, rolling_avg를 우선적으로 구현.

Snapshot generation status

Is your feature request related to a problem? Please describe.
현재 snapshot 생성시, 성공여부를 알 수가 없는 상태입니다.

Describe the solution you'd like
성공 여부를 나타내는 필드를 snapshot entity에 포함시키는 것이 좋겠습니다.

Additional context
그동안은 따로 status를 두지 않고, response중 finishTime 이라는 key가 있으면 SUCCEEDED, 없으면 RUNNING으로 처리했었습니다.

이제 스냅샷 생성이 cancel이 가능해지고, 실패시 바로 FAILED로 처리할 수 있게 하였기 때문에,
"종료 시간"은 성공, 실패, 중단 모든 경우에 의미가 있게 되었습니다.

finishTime의 위의 세 경우 모두 찍는 것으로 하고,
작업의 상태는 다음 중의 하나를 설정하는 것으로 하겠습니다.

INITIALIZING : 초기 상태
LOADING : 처음 grid를 구성하는 중일 때
RUNNING : 전수 변환 처리에 들어간 경우 (병렬 처리인 경우 그 중 하나라도)
WRITING : 파일 출력에 들어간 경우. Hive 스냅샷인 경우 테이블 생성 과정도 포함
SUCCEEDED: 마지막 WRITING까지 성공적으로 끝난 경우 (finishTime 설정됨)
FAILED : 에러가 발생해서 중단된 경우 (finishTime 설정됨)
CANCELING : 사용자가 중단을 요청한 경우. 그래서 작업들이 중단되고 있는 경우
CANCELED: 사용자 요청에 의해 중단된 경우 (finishTime 설정됨)

Provide whether or not snapshot can be stored

Is your feature request related to a problem? Please describe.
현재 /preparationdatasets/{dsId}/transform/configuration GET이 SS_TYPE.FILE에 대해서만 사용이 되는데,
이것이 snapshot 생성 옵션 제한에도 사용되었으면 좋겠습니다.

Describe the solution you'd like
스냅샷 생성 팝업 화면에서,
SS_TYPE.HDFS 스냅샷을 만들 수 있는지 여부,
SS_TYPE.HIVE 스냅샷을 만들 수 있는지 여부
등을 알기 위해서 사용이 되면 좋을 것 같네요.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
HDFS 상에 실제로 write를 할 수 있는 상태인지, 또는 Hive schema가 실제로 조회되는 상태인지로 판단하는 것이 아니라, 관련한 "설정이 되어있는지"로 판단해야할 것 같습니다.
설정을 했음에도 불구하고 에러가 나는 것은 런타임 에러로 처리가 되는 것이 맞습니다.
차후 이러한 경우에 대한 방비가 필요하다면 다른 방식으로 보완하는 것이 좋겠습니다.일단 기본적으로는 application.yaml에 설정을 했는지 여부로 진행을 해주세요.

Save on HDFS first for WAS clusters

Is your feature request related to a problem? Please describe.
현재, WAS가 이중화 되어있는 경우 upload (import) 한 dataset의 내용을 찾을 수 없는 경우가 발생합니다.

Describe the solution you'd like
HDFS 연결이 가능한 경우 (이것을 체크하는 것도 일), HDFS 상의 특정 위치 (stagingBaseDir이면 될 듯)에 uploads와 previews를 저장하면 좋겠습니다.
Imported dataset의 내용을 읽을 필요가 있는 경우 (HDFS 연결이 가능한 경우) HDFS의 stagingBaseDir/uploads를 먼저 뒤지고, 거기에 없는 경우에 localBaseDir/uploads를 보면 좋겠습니다.
previews, snapshots도 마찬가지로 해야겠습니다.

Additional context
snapshot의 경우 애당초, HDFS로 완전 지정된 경우가 있어서 세심하게 잘 해줘야겠네요.
(HDFS 타입인 경우, stagingBaseDir에 없으면 없는 것으로. Local 파일 타입인 경우 localBaseDir도 보는 것으로)

Improve convenience for specifying ingestion options

Is your feature request related to a problem? Please describe.

  • 적재 단계를 수행중 적재 옵션 입력이 단순 JSON 텍스트 입력으로 제공되어 있어 사용하기 어렵습니다.

Describe the solution you'd like

  • 적재 옵션에 대해 필수 적재 옵션 및 기본값을 을 사용자에게 노출하고, 이 값만 일반 텍스트 입력으로 수행할수 있도록 개선합니다.
    image

  • 데이터소스 상세 화면내에서 지정한 적재 옵션에 대한 정보를 보여줍니다.
    image

Describe alternatives you've considered
<N/A>

Additional context
<N/A>

Don't change the chart zoom when changing minimap option on/off

Is your feature request related to a problem? Please describe.
chart zoom 배율을 변경 한 후에 minimap 의 on/off 상태를 바꾸면 배율이 리셋되는 현상이 있음

Describe the solution you'd like
minimap 옵션을 켜거나 끄더라도 chart zoom 배율은 그대로 있어야 함.

Describe alternatives you've considered

Additional context

Add snapshot cancelation feature on data preparation

Is your feature request related to a problem? Please describe.
Snapshot 생성 중에 취소할 수 있는 기능이 없음.

Describe the solution you'd like
Snapshot 생성 취소 버튼을 만들어 선택 시 snapshot 생성이 중단 되도록 함.

Additional context
TeddyExcutor.applyRuleStrings 메소드에서 생성한 thread들을 jobList에 담아두고,
취소 요청이 왔을 때 해당 thread들을 cancel 처리해서 exception이 발생하도록 하여 전체 snapshot 생성을 취소처리 함.

Dashboard selection error when using 2-depth chart selection

Describe the bug
대시보드에서 2번의 차트 선택 후 마지막 차트의 선택을 취소하면 상단의 모든 필터가 사라지나 필터는 남아 있음

To Reproduce
Steps to reproduce the behavior:
다음 URL 에 접속해서 스크린샷 순서 대로 진행한다.
https://discovery.metatron.app/app/v2/workbook/57cad565-7616-40ba-a81d-a92fece63d99

  1. 천번째 차트 선택
  2. 두번째 차트 선택
  3. 두번째 차트 선택 취소
  4. 모든 필터가 다 사라짐

Expected behavior
첫번째 필터가 남아 있어야 함

Screenshots

  1. 1번 차트 선택

selection-error1

  1. 2번 차트 선택

selection-error2

  1. 2번 차트 선택 취소

selection-error3

Desktop (please complete the following information):
데모 사이트

Additional context
Add any other context about the problem here.

Improve grid chart : support resize

Is your feature request related to a problem? Please describe.

  • Grid Chart 사용시 다수의 개선 요청 사항 건을 진행합니다.

Describe the solution you'd like

  • 차트위젯 사이즈에 따른 Grid Chart Resize 조정과, 컬럼 resize 기능을 추가합니다.
  • 차트 생성 조건을 최소화 gkqslek.
    : 현재 > 차트 생성 조건은, 열 또는 행 : 차원값 1개 이상, 교차 : 측정값 1개 이상
    : 개선안 > 열 또는 행 : 차원값 1개 이상 / 측정값 없는 차원값 리스트 형태도 표현 가능하도록 조건 변경

Describe alternatives you've considered
<N/A>

Additional context
<N/A>

Refactoring on dataprep UI component code

Is your feature request related to a problem? Please describe.

  • 데이터플로우 룰 편집 성능 향상을 위한 소스 정리

Describe the solution you'd like

  • 하나의 파일로 구성되어 있는 룰 편집 기능을 각 커맨드별 별도 컴포넌트로 나눔

Additional context

  • 다음으로 진행해야 하는 룰 중간 편집에도 영향이 있어 코드 정리 필요

The description is incorrect if you did not enter a password on the login page.

Describe the bug
The description is incorrect if you did not enter a password on the login page.

To Reproduce
Steps to reproduce the behavior:

  1. Click the login button without entering any information on the login page. (http://localhost:8180/app/v2/user/login)

Expected behavior
Please enter your password in English.

Screenshots
login-page

Desktop (please complete the following information):

  • OS: MacOS
  • Browser: chrome
  • Version: 68.0.3440.106

Additional context

Hive query with new line produce error.

Describe the bug

hive 워크벤치에서 아래 쿼리를 실행할 때

dfs -ls /;

query 실행하는 라인 위에 공백이 잇는 상테어서 실행이 되면, 아래와 같은 에러 발생

org.apache.hive.service.cli.HiveSQLException: Error while processing statement: null

To Reproduce
Steps to reproduce the behavior:

  1. Go to hive workbench
  2. input query with new line 'dfs -ls /;'
  3. Query Execute.
  4. See error

Expected behavior
정상 쿼리 결과 출력

Screenshots

Desktop (please complete the following information):

  • OS: MacOS
  • Browser Chrome
  • Version 버전 68.0.3440.106(공식 빌드) (64비트)

Additional context
N/A

I changed the password of the demo site administrator.

Describe the bug
I changed the password of the demo site administrator.

To Reproduce
Steps to reproduce the behavior:

  1. Change password in the Modify User Profile pop-up

Expected behavior
I thought the admin password would not be changed.

Screenshots
N/A

Desktop (please complete the following information):

  • OS: MacOS
  • Browser: chrome
  • Version: 68.0.3440.106

Additional context
I didn't think the admin password would be changed on the demo site, but I don't think it's a good strategy to put conditional statements in order to ensure that only the demo site doesn't change the password.
I think it is the right thing to periodically reset the admin password through cron on the server.
This is a problem that can only occur on demo sites.
The admin password I changed is "admin!@#1234".

Need to distinguish main data source and lookup data source

Is your feature request related to a problem? Please describe.
Association 단계는 main data source 에게만 허용되는 단계이므로 레이블을 바꾸는 것이 괜찮을 것 같음

Describe the solution you'd like
main data source 해당 하는 레이블을 개발하고(예: Tableau 에서는 Supersotre 라는 용어를 사용함)
"You need to establish relationships between data sources so that you can link charts" 이 문구에서 data sources 앞에 main 을 붙이거나 그에 준하는 레이블로 변경이 필요함

Describe alternatives you've considered

Additional context
label_change

Incorrect number of workbooks cause by folder deletion error

Describe the bug
개인 워크스페이스에서 실제 워크북의 개수와 좌측 상단에 표시되는 워크북의 개수가 다름

To Reproduce

  1. 데모 사이트에서 admin 으로 로그인
  2. 개인 워크스페이스에 상단 워크스페이스 개수는 4로 나오나 아래 목록에는 3개의 워크북만 존재함

Expected behavior
상단 워크북 개수와 실제 워크북 개수가 일치해야 함

Screenshots
incorrect_workbook

Desktop (please complete the following information):

Additional context

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.