metatron-discovery icon indicating copy to clipboard operation
metatron-discovery copied to clipboard

Support multi-value filtering of filtered aggregator for group-by dimensions

Open navis opened this issue 3 years ago • 1 comments

#3993 for filtered aggregators

navis avatar Feb 03 '22 03:02 navis

    walker.getQueryConfig().getGroupBy().setGroupedUnfoldDimensions(true);
    walker.getQueryConfig().getGroupBy().setMultiValueDimensionFiltering(true);
    String query = "SELECT bks_event_d0, bks_event_d1, bks_event_d2,"
                   + "count(*) FILTER (WHERE bks_event_d0 = 'APP'),"
                   + "count(*) FILTER (WHERE bks_event_d0 = 'T114'),"
                   + "count(*) FILTER (WHERE bks_event_d1 = 'IT'),"
                   + "count(*) FILTER (WHERE bks_event_d2 = '치킨')"
                   + " FROM %s "
                   + " GROUP BY bks_event_d0, bks_event_d1, bks_event_d2";
    Object[][] expected1 = {
        new Object[]{"APP", "IT", "티월드다이렉트(tworlddirect.com)", 2L, 0L, 2L, 0L},
        new Object[]{"APP", "생활", "도미노피자(Dominopizza)", 2L, 0L, 0L, 0L},
        new Object[]{"T114", "금융", "신용카드사", 0L, 2L, 0L, 0L},
        new Object[]{"T114", "음식", "치킨", 0L, 2L, 0L, 2L}
    };
    testQuery(String.format(query, "cdis"), expected1);
    testQuery(String.format(query, "cdis_i"), expected1);

    Object[][] expected2 = {
        new Object[]{"APP", "IT", "티월드다이렉트(tworlddirect.com)", 1L, 0L, 1L, 0L},
        new Object[]{"APP", "생활", "도미노피자(Dominopizza)", 1L, 0L, 0L, 0L},
        new Object[]{"T114", "금융", "신용카드사", 0L, 1L, 0L, 0L},
        new Object[]{"T114", "음식", "치킨", 0L, 1L, 0L, 1L}
    };
    testQuery(String.format(query, "cdis WHERE svc_mgmt_num = '10000497'"), expected2);
    testQuery(String.format(query, "cdis_i WHERE svc_mgmt_num = '10000497'"), expected2);

navis avatar Feb 03 '22 04:02 navis