zoukankan      html  css  js  c++  java
  • Java--druidAPI查询

    maven依赖
    <dependency>
    <groupId>in.zapr.druid</groupId>
    <artifactId>druidry</artifactId>
    <version>2.1</version>
    </dependency>

    1 组装json

    //时间范围:Interval
    DateTime start = new DateTime(DateUtils.getToday()+"T00:00:00.000+08:00");
    DateTime end = new DateTime();
    Interval interval = new Interval(start,end);
    // 粒度
    Granularity granularity = new SimpleGranularity(PredefinedGranularity.ALL);
    // 过滤
    DruidFilter todayUvEventFilter = new SelectorFilter("event","3001");
    DruidFilter todayUvPageIdFilter = new SelectorFilter("page_id","101");
    // and过滤
    DruidFilter todayUvFilters = new AndFilter(Arrays.asList(todayUvEventFilter,todayUvPageIdFilter));
    // HyperUnique 聚合
    DruidAggregator todayUvAggregator = new HyperUniqueAggregator("today_uv","user_id");
    // Filteres聚合
    DruidAggregator todayUvAggregators = new FilteredAggregator(todayUvFilters,todayUvAggregator);

    DruidFilter articleUvEventFilter = new SelectorFilter("event","3001");
    DruidFilter articleUvPageIdFilter = new SelectorFilter("page_id","102");
    DruidFilter articleUvFilters = new AndFilter(Arrays.asList(articleUvEventFilter,articleUvPageIdFilter));
    DruidAggregator articleUvAggregator = new HyperUniqueAggregator("article_uv","user_id");
    DruidAggregator articleUvAggregators = new FilteredAggregator(articleUvFilters,articleUvAggregator);

    DruidFilter ypsUvEventFilter = new SelectorFilter("event","3001");
    DruidFilter ypsUvPageIdFilter = new SelectorFilter("page_id","201");
    DruidFilter ypsUvFilters = new AndFilter(Arrays.asList(ypsUvEventFilter,ypsUvPageIdFilter));
    DruidAggregator ypsUvAggregator = new HyperUniqueAggregator("yps_uv","user_id");
    DruidAggregator ypsUvAggregators = new FilteredAggregator(ypsUvFilters,ypsUvAggregator);

    DruidFilter messageUvButtonIdFilter = new SelectorFilter("button_id","10102");
    DruidFilter messageUvFilters = new AndFilter(Arrays.asList(messageUvButtonIdFilter));
    DruidAggregator messageUvAggregator = new HyperUniqueAggregator("message_uv","user_id");
    DruidAggregator messageUvAggregators = new FilteredAggregator(messageUvFilters,messageUvAggregator);

    // PostAggregator
    DruidPostAggregator articleUvArticleField = new HyperUniqueCardinalityPostAggregator("article_uv","article_uv");
    DruidPostAggregator todayUvArticleField = new HyperUniqueCardinalityPostAggregator("today_uv","today_uv");
    DruidPostAggregator articleRatePostAgg = ArithmeticPostAggregator.builder().name("article_rate").function(ArithmeticFunction.DIVIDE).fields(Arrays.asList(articleUvArticleField,todayUvArticleField)).build();

    DruidPostAggregator ypsUvYpsField = new HyperUniqueCardinalityPostAggregator("yps_uv","yps_uv");
    DruidPostAggregator todayUvYpsField = new HyperUniqueCardinalityPostAggregator("today_uv","today_uv");
    DruidPostAggregator ypsRatePostAgg = ArithmeticPostAggregator.builder().name("yps_rate").function(ArithmeticFunction.DIVIDE).fields(Arrays.asList(ypsUvYpsField,todayUvYpsField)).build();

    DruidPostAggregator messageUvMessageField = new HyperUniqueCardinalityPostAggregator("message_uv","message_uv");
    DruidPostAggregator todayUvMessageField = new HyperUniqueCardinalityPostAggregator("today_uv","today_uv");
    DruidPostAggregator messageRatePostAgg = ArithmeticPostAggregator.builder().name("message_rate").function(ArithmeticFunction.DIVIDE).fields(Arrays.asList(messageUvMessageField,todayUvMessageField)).build();

    //组装DruidQuery
    DruidTimeSeriesQuery query = DruidTimeSeriesQuery.builder()
    .dataSource(druidProperties.getDataSourceOpenPlatform())
    .granularity(granularity)
    .intervals(Collections.singletonList(interval))
    .aggregators(Arrays.asList(todayUvAggregators,articleUvAggregators,ypsUvAggregators,messageUvAggregators))
    .postAggregators(Arrays.asList(articleRatePostAgg,ypsRatePostAgg,messageRatePostAgg))
    .build();
    2 查询
    public List<HashMap> queryResult( DruidQuery query) throws ConnectionException, JsonProcessingException, QueryException {
    ObjectMapper mapper = new ObjectMapper();
    String requiredJson = mapper.writeValueAsString(query);
    log.info(requiredJson);
    DruidClient client = dataSourceDruidConfig.druidClient();
    client.connect();
    List<HashMap> responses = client.query(query, HashMap.class);
    client.close();
    return responses;
    }
    3 分析并组装结果
    try {
    List<HashMap> res = queryResult(query);
    if(res!=null){
    DecimalFormat df = new DecimalFormat("0.00%");
    for (HashMap hashMap : res){
    Map<String,Object> event = (Map<String,Object>)hashMap.get("result");
            //小数-》百分比
    String yps_rate = String.valueOf(event.get("yps_rate"));
    entiretUvRateParam.setYps_rate(df.format(Double.parseDouble(yps_rate)));
    }
    }
    } catch (ConnectionException e) {
    e.printStackTrace();
    return null;
    } catch (QueryException e) {
    e.printStackTrace();
    return null;
    } catch (JsonProcessingException e) {
    e.printStackTrace();
    return null;
    } catch (Exception e) {
    e.printStackTrace();
    return null;
    }
  • 相关阅读:
    支持向量机SVM知识点概括
    决策树知识点概括
    HDU 3081 Marriage Match II
    HDU 3572 Task Schedule
    HDU 4888 Redraw Beautiful Drawings
    Poj 2728 Desert King
    HDU 3926 Hand in Hand
    HDU 1598 find the most comfortable road
    HDU 4393 Throw nails
    POJ 1486 Sorting Slides
  • 原文地址:https://www.cnblogs.com/serena25/p/10488791.html
Copyright © 2011-2022 走看看