Comments (20)
@kyungtaak
해당 상세페이지에서 사용되는 api에 대한 문의사항입니다.
기존에 타입 변경에 사용되던 api를 사용하여 테스트하였습니다.
api/datasources/{soruceId}/fields
필터링 설정과 제거에는 filtering = true | false
로 하였더니 정상적으로 작동을 하였으나,
필터링 옵션에 대해서는 아래와 같은 오류가 발생합니다.
// params
[{
aggrType:"NONE"
alias:"PLUGIN_NAME"
biType:"DIMENSION"
filtering:true
filteringOptions:{allowSelectors: ["SINGLE_LIST"], type: "INCLUSION", defaultSelector: "SINGLE_LIST"}
filteringSeq:0
id:10037124
logicalType:"STRING"
name:"PLUGIN_NAME"
op:"replace"
role:"DIMENSION"
seq:0
type:"STRING"
}]
// error
com.metatron.discovery.common.exception.UnknownServerException: java.util.LinkedHashMap cannot be cast to java.lang.String
at com.metatron.discovery.common.exception.GlobalExceptionHandler.handleAll(GlobalExceptionHandler.java:133)
at sun.reflect.GeneratedMethodAccessor661.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.service(FrameworkServlet.java:843)
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 com.metatron.discovery.common.web.CommonLocalVariableFilter.doFilter(CommonLocalVariableFilter.java:45)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.metatron.discovery.common.web.LogbackMdcFilter.doFilter(LogbackMdcFilter.java:39)
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:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.lang.String
at com.metatron.discovery.domain.datasource.Field.updateField(Field.java:229)
at com.metatron.discovery.domain.datasource.DataSourceController.patchFieldsInDataSource(DataSourceController.java:501)
at com.metatron.discovery.domain.datasource.DataSourceController$$FastClassBySpringCGLIB$$c7954abd.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:669)
at com.metatron.discovery.domain.datasource.DataSourceController$$EnhancerBySpringCGLIB$$bbedd86e.patchFieldsInDataSource(<generated>)
at sun.reflect.GeneratedMethodAccessor645.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)
... 86 more
from metatron-discovery.
@brandon-exntu 네 수정해놓겠습니다. f#9-add_filter_config 브렌치 활용 부탁드립니다.
from metatron-discovery.
@brandon-exntu
수정하였습니다.
일부 스펙변경이 있었습니다. (@eltriny 대시보드 구성시 영향도가 있다면 함께 변경 부탁드립니다.)
[{
...,
"filteringOptions": {
"type": "TIME", // 기존 INTERVAL -> TIME 으로 변경
"defaultSelector": "range",
"allowSelectors": [
"range",
"relative"
]
}
},
{
...,
"filteringOptions": {
"type": "INCLUSION",
"defaultSelector": "single_list",
"allowSelectors": [
"single_list",
"single_combo"
]
}
}]
from metatron-discovery.
@kyungtaak
확인하였습니다.
테스트한 결과 필터링 옵션은 추가가 되나 제거가 되지 않습니다.
추가된 필터링옵션에서 제거에 대한 파라메터는 아래와 같이 보냈습니다.
alias:"City"
filtering:true
filteringSeq:1
id:10037002
logicalType:"STRING"
name:"City"
op:"replace"
role:"DIMENSION"
seq:2
type:"STRING"
에러는 발생하지 않으나 필터링옵션 제거가 되지 않습니다.
아래는 변경을 요청한 컬럼에대한 조회 결과입니다.
alias:"City"
filtering:true
filteringOptions:{type: "INCLUSION", defaultSelector: "SINGLE_LIST", allowSelectors: ["SINGLE_LIST"]}
filteringSeq:1
id:10037002
logicalType:"STRING"
name:"City"
role:"DIMENSION"
seq:2
type:"STRING"
from metatron-discovery.
filteringOption 을 제거한다는것은 필터 설정을 하지 않겠다는 것으로 인식하였습니다. 따라서 filtering 속성을 false 로 주게 되면 filtering 관련 추가 속성들이 모두 null 처리가 되도록 수정하였으니, 추가/제거시 filtering 속성을 기준으로 작업해주세요.
from metatron-discovery.
@kyungtaak
기획 쪽에서 전달 받은 내용입니다.
요청사항에 의해 filteringOption을 설정하는 체크박스를 hide 시켜놓겠습니다.
해당 체크박스는 필수필터를 대시보드에서 사용할 때 필터링 선택 범위를 제한할 수 있는 옵션입니다. 대시보드 필터링 설정 화면에서 리스트 타입일 경우, 체크를 하면 ‘다중’ 선택이 비활성 됩니다. 시간 타입일 경우, 체크를 하면 ‘전체기간’이 비활성 됩니다.
그런데, 지금 싱글 선택일때도 (All) 이 목록으로 추가되어 선택 범위를 제한 하는 것이 의미가 없어졌고, 시간 필터의 UI에 대한 이슈도 있기 때문에 기획 재검토가 필요해 보입니다.
관련 이슈가 처리될 때까지 기능을 잠시 막아주시는 것이 좋을 것 같습니다
from metatron-discovery.
@metatron-app/design linked datasource 관련 고려 부탁드립니다.
from metatron-discovery.
@AnnieHwang 링크드일때 컬럼 디테일 탭에 Statistics, Histogram, Value list, Convariance ranking 을 막아주면 될까요?
참고로, 수집형 일때 기획서 첨부합니다.
from metatron-discovery.
@minjung-cho 다른건 다 막아주는게 맞을것 같고요. Value list는 혹시 Histogram하단에 나오는 value와 covariance값을 말씀하시는건가요? 진짜 Value list를 말씀하시는건가요? @kyungtaak 저는 링크드 일때도 실제 Value List가 나와야 할 것 같은데 (에센셜필터 등을 할때 사용하려고요) 혹시 개발이 가능할까요?
from metatron-discovery.
@AnnieHwang value list는 차원값>시간이외 의 Statistics 하단의 value count 값들이요~
from metatron-discovery.
@AnnieHwang @minjung-cho
JDBC 상에서 사실 Druid 내에서 와 같이 value list 를 포함하여 통계정보를 내는것은 비용이 큽니다.
따라서 두가지 안을 제안드리고 싶은데요. 전 1안으로 심플(?) 하게 갔으면 하는데요. 검토해주세요.
- 통계 정보 제거
- 통계정보는 접어두고, 만약 보고 싶다면 로드 버튼을 활성화하여 로딩하여 통계정보 확인
from metatron-discovery.
@kyungtaak 1번으로 '통계 정보 제거'로 형태로 나오는걸로 결정하였습니다. 감사합니다.
from metatron-discovery.
@brandon-wonjune 링크드 타입인 경우, Statistics, Histogram, Value list, Convariance ranking 은 안보이면 됩니다. 또한, Monitoring 탭도 안보여야 합니다.(#155)
from metatron-discovery.
기획서 V.1.30에 반영함
from metatron-discovery.
@minjung-cho Linked 타입인경우 Statistics, Histogram, Value list, Convariance ranking를 숨기도록 처리하였습니다.
모니터링 탭의 경우 #155 에서 처리하였습니다.
https://tde.sktelecom.com/pms/browse/METATRON-1417 도 또한 같이 처리하였습니다.
from metatron-discovery.
@brandon-wonjune 수정 완료후 소스코드에 충돌 이슈가 있다면, #155 이슈와 묶어서 PR 이슈로 올려주세요.
from metatron-discovery.
@kyungtaak 문의사항이 있습니다.
저번에 브랜치를 날렸을때 파일을 백업한것을 다시 커밋했는데
Field.java 파일에서
public BIType getBiType() {
if(role == null) {
return null;
}
return BIType.valueOf(role.name());
}
이 부분에 @JsonIgnore
와 @Deprecated
에 추가되는게 맞나요?
만약 추가되는게 맞다면 차트쪽에서 문제가 생길 수 있습니다.
from metatron-discovery.
@brandon-wonjune 현재 BIType 은 1.0 에서 사용하던 필드로 Deprecated 시키고 이는 "role" 이라는 속성으로 변경될 예정입니다.
@eltriny @dave-taeho 아직도 BiType을 쓰는 곳이 있나요? 확인해주시고요. 아직 사용한다면 임시로 @JsonIgore 어노테이션을 추가해서 올려주세요.
from metatron-discovery.
@kyungtaak 해당 작업을 마무리 했는데 현재 로컬에서 테스트 중 입니다.
그런데 연결형 데이터소스를 이용한 적재가 되지 않고 있습니다.
그로인해 필수필터에 대한 확인은 로컬에서 하지 못하는 상태입니다.
혹시 확인할 수 있는 다른 방법이 있을까요?
from metatron-discovery.
@brandon-wonjune
우선 PR 오픈 해주시고 testbed에서 확인 하는게 좋을것 같습니다.
from metatron-discovery.
Related Issues (20)
- Add p2v_load function
- Implement batch vector inferer for ingestion
- Fix exception in schema when segment removed
- Support in-place vector normalization for DOT_PRODUCT similarity
- Make DOT_PRODUCT as default similarity for knn.vector
- Make p2v predict function based on bulk calculation of similarity
- Support byte vectors in knn.vector indexing strategy
- Support unnesting of shallow array of struct in group-by query
- Support segment moving query
- Change default compression codec for netty client to indentity
- Lessen noise in coordinator log
- Backport DRUID-6024
- Fix some security issue
- Use shared fail queue in connection pool for exponential backoff
- Fix NPE in KafkaEmitter
- Support deleteOnSuccess in local firehose
- Fix unnesting field access of struct of array in incremental index
- Support unnesting array of array dimension in group by query
- Apply lazy selection on outer most array selector in deep nested selector
- Layer position is incorrect in iframe.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from metatron-discovery.