Good idea.. If you have some requirement that Kylin can not support
currently, change datasource by creating views to  will be always works...

2015-09-04 22:31 GMT+08:00 周千昊 <[email protected]>:

> Hi, Sebastien,
>      Actually your requirement is kind of UDF which kylin currently cannot
> support.
>      However as a workaround, you can get the result following:
>      lets say you have
>      a table: t1
>      with several columns: c1, c2 ... cn
>      and 2 measures: m1, m2
>      1. create a view v1 for t1
>       with columns: c1, c2, ... cn
>       and 2 new measures: m3(= m1*m2), m4(=m1-m2)
>       2. create cube base on v1
>       3. then you can do query like SELECT column, sum(m3) FROM facts GROUP
> BY column to get what you want
>
> Sébastien Jelsch <[email protected]>于2015年9月4日周五 下午9:58写道:
>
> > Hi Luke,
> >
> > thanks for you answer.
> >
> > I don’t get the correct results.
> >
> > Example:
> > ====================
> > ||  m1  ||  m2  ||  m1 * m2  ||
> > -----------------------------------
> > ||   3    ||   17  ||           51  ||
> > ||   4    ||   24  ||           96  ||
> > ====================
> >
> > Result that I want: 3*17 + 4*24 = 51 + 96 = 147.
> > Result I get with the expression sum(measure1) * sum(measure2): 3+4 *
> > 17+24 = 7 * 41 = 287 .
> >
> > So, is it possible to add some logic to aggregate functions?
> >
> > Best regards,
> > Sébastien
> >
> >
> >
> > > Am 04.09.2015 um 15:20 schrieb Luke Han <[email protected]>:
> > >
> > > try to use
> > > SELECT column, sum(measure1) * sum(measure2)  FROM facts GROUP BY
> column
> > > SELECT column, sum(measure1) - sum(measure2) FROM facts GROUP BY column
> > >
> > > since there's only those two measures in cube.
> > >
> > > Thanks.
> > >
> > >
> > > Best Regards!
> > > ---------------------
> > >
> > > Luke Han
> > >
> > > On Fri, Sep 4, 2015 at 9:09 PM, Sébastien Jelsch <
> > [email protected]
> > >> wrote:
> > >
> > >> Hi community,
> > >>
> > >> are that kind of expressions possible in Kylin?
> > >>
> > >> SELECT column, sum(measure1 * measure2) FROM facts GROUP BY column
> > >> SELECT column, sum(measure1 - measure2) FROM facts GROUP BY column
> > >>
> > >> While trying to execute I get this exception:
> > >> null while executing SQL: SELECT column, sum(measure1 * measure2) FROM
> > >> facts GROUP BY column
> > >>
> > >> Using Kylin 0.7.3 and cube created with measures sum(measure1) and
> > >> sum(measure2).
> > >>
> > >> Thanks in advance,
> > >> Sébastien
> > >>
> > >> --------------------------
> > >> Error Stack Trace:
> > >>
> > >> [http-bio-7070-exec-9]:[2015-09-04
> > >>
> >
> 14:58:39,797][ERROR][org.apache.kylin.rest.controller.BasicController.handleError(BasicController.java:46)]
> > >> -
> > >> org.apache.kylin.rest.exception.InternalErrorException: null
> > >> while executing SQL: "select    "ORDERDATE“."YEAR",
> >  sum(FACTS.QUANTITY *
> > >> FACTS.DISCOUNT) from "FACTS" join "ORDERDATE" on "FACTS"."ORDERDATE" =
> > >> "ORDERDATE“."ID" where   "ORDERDATE"."YEAR" = '1992' group by
> > >> "ORDERDATE"."YEAR" LIMIT 50000"
> > >>  at
> > >>
> >
> org.apache.kylin.rest.controller.QueryController.doQueryInternal(QueryController.java:219)
> > >>  at
> > >>
> >
> org.apache.kylin.rest.controller.QueryController.doQuery(QueryController.java:165)
> > >>  at
> > >>
> >
> org.apache.kylin.rest.controller.QueryController.query(QueryController.java:87)
> > >>  at sun.reflect.GeneratedMethodAccessor138.invoke(Unknown Source)
> > >>  at
> > >>
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> > >>  at java.lang.reflect.Method.invoke(Method.java:606)
> > >>  at
> > >>
> >
> org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
> > >>  at
> > >>
> >
> org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
> > >>  at
> > >>
> >
> org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
> > >>  at
> > >>
> >
> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
> > >>  at
> > >>
> >
> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
> > >>  at
> > >>
> >
> org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
> > >>  at
> > >>
> >
> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
> > >>  at
> > >>
> >
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
> > >>  at
> > >>
> >
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
> > >>  at
> > >>
> >
> org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
> > >>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
> > >>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
> > >>  at
> > >>
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
> > >>  at
> > >>
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
> > >>  at
> > org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
> > >>  at
> > >>
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
> > >>  at
> > >>
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
> > >>  at
> > >>
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
> > >>  at
> > >>
> >
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
> > >>  at
> > >>
> >
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
> > >>  at
> > >>
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> > >>  at
> > >>
> >
> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
> > >>  at
> > >>
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> > >>  at
> > >>
> >
> org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
> > >>  at
> > >>
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> > >>  at
> > >>
> >
> org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
> > >>  at
> > >>
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> > >>  at
> > >>
> >
> org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
> > >>  at
> > >>
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> > >>  at
> > >>
> >
> org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
> > >>  at
> > >>
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> > >>  at
> > >>
> >
> org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
> > >>  at
> > >>
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> > >>  at
> > >>
> >
> org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter.doFilter(DefaultLoginPageGeneratingFilter.java:91)
> > >>  at
> > >>
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> > >>  at
> > >>
> >
> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:183)
> > >>  at
> > >>
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> > >>  at
> > >>
> >
> org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
> > >>  at
> > >>
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> > >>  at
> > >>
> >
> org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
> > >>  at
> > >>
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> > >>  at
> > >>
> >
> org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
> > >>  at
> > >>
> >
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
> > >>  at
> > >>
> >
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
> > >>  at
> > >>
> >
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
> > >>  at
> > >>
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
> > >>  at
> > >>
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
> > >>  at
> > >>
> >
> org.apache.kylin.rest.filter.KylinApiFilter.doFilterInternal(KylinApiFilter.java:66)
> > >>  at
> > >>
> >
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
> > >>  at
> > >>
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
> > >>  at
> > >>
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
> > >>  at
> > >>
> com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:195)
> > >>  at
> > >>
> com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:266)
> > >>  at
> > >>
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
> > >>  at
> > >>
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
> > >>  at
> > >>
> >
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
> > >>  at
> > >>
> >
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
> > >>  at
> > >>
> >
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
> > >>  at
> > >>
> >
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
> > >>  at
> > >>
> >
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
> > >>  at
> > >>
> > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
> > >>  at
> > >>
> >
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
> > >>  at
> > >>
> >
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
> > >>  at
> > >>
> >
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
> > >>  at
> > >>
> >
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
> > >>  at
> > >> org.apache.tomcat.util.net
> > .JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
> > >>  at
> > >>
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> > >>  at
> > >>
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> > >>  at
> > >>
> >
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
> > >>  at java.lang.Thread.run(Thread.java:745)
> >
> > --
> Best Regard
> ZhouQianhao
>

Reply via email to