You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@drill.apache.org by Christopher Matta <cm...@mapr.com> on 2014/12/10 21:29:28 UTC

COUNT DISTINCT with HAVING causing a failure

Tableau is using the following query to get the distinct count of a measure:

SELECT COUNT(DISTINCT `custview`.`age`) AS `ctd_age_ok` FROM
`mfs.views`.`nestedclickview` `nestedclickview` INNER JOIN
`mfs.views`.`custview` `custview` ON (`nestedclickview`.`cust_id` =
`custview`.`cust_id`) HAVING (COUNT(1) > 0);

And it fails on 0.06r2.

Interestingly if I remove the HAVING(COUNT(1)>0) statement at the end it
works:

: jdbc:drill:zk=172.16.1.175:5181,172.16.1.1> SELECT COUNT(DISTINCT
`custview`.`age`) AS `ctd_age_ok` FROM `mfs.views`.`nestedclickview`
`nestedclickview` INNER JOIN `mfs.views`.`custview` `custview` ON
(`nestedclickview`.`cust_id` = `custview`.`cust_id`);

+------------+
| ctd_age_ok |
+------------+
| 5          |
+------------+
1 row selected (4.776 seconds)

Is this a bug, or a malformed query from Tableau?

See the error log attached for more detail.

Chris Matta
cmatta@mapr.com
215-701-3146
​

Re: COUNT DISTINCT with HAVING causing a failure

Posted by Christopher Matta <cm...@mapr.com>.
Thanks Aman,
Other version of the query work correctly, but the non-working query is
generated by Tableau by default. I would think something like this would
need to be supported. I'll file a Jira.

Chris Matta
cmatta@mapr.com
215-701-3146

On Wed, Dec 10, 2014 at 3:59 PM, Aman Sinha <as...@maprtech.com> wrote:

> Since there is no GROUP-BY in the query, I am not sure what the HAVING
> COUNT(1) > 0 really means here.  The query computes the total number of
> distinct values of a column and filters it by checking the count(1)  (which
> is equivalent to count(*)) ?  There is only 1 value returned.
>
> Drill fails to plan the query, which is a bug - pls file a JIRA -  but the
> following alternate versions of the query seem more meaningful (I think
> both of these should run successfully):
>   1.  SELECT  column1,  COUNT(distinct column2) FROM ...  GROUP BY column1
> HAVING COUNT(*) > 0
>   2.  SELECT  COUNT(distinct column2) FROM .... HAVING COUNT(distinct
> column2) > 0
>
> Aman
>
> On Wed, Dec 10, 2014 at 12:29 PM, Christopher Matta <cm...@mapr.com>
> wrote:
>
> > Tableau is using the following query to get the distinct count of a
> > measure:
> >
> > SELECT COUNT(DISTINCT `custview`.`age`) AS `ctd_age_ok` FROM
> `mfs.views`.`nestedclickview` `nestedclickview` INNER JOIN
> `mfs.views`.`custview` `custview` ON (`nestedclickview`.`cust_id` =
> `custview`.`cust_id`) HAVING (COUNT(1) > 0);
> >
> > And it fails on 0.06r2.
> >
> > Interestingly if I remove the HAVING(COUNT(1)>0) statement at the end it
> > works:
> >
> > : jdbc:drill:zk=172.16.1.175:5181,172.16.1.1> SELECT COUNT(DISTINCT
> `custview`.`age`) AS `ctd_age_ok` FROM `mfs.views`.`nestedclickview`
> `nestedclickview` INNER JOIN `mfs.views`.`custview` `custview` ON
> (`nestedclickview`.`cust_id` = `custview`.`cust_id`);
> >
> > +------------+
> > | ctd_age_ok |
> > +------------+
> > | 5          |
> > +------------+
> > 1 row selected (4.776 seconds)
> >
> > Is this a bug, or a malformed query from Tableau?
> >
> > See the error log attached for more detail.
> >
> > Chris Matta
> > cmatta@mapr.com
> > 215-701-3146
> > ​
> >
>

Re: COUNT DISTINCT with HAVING causing a failure

Posted by Aman Sinha <as...@maprtech.com>.
Since there is no GROUP-BY in the query, I am not sure what the HAVING
COUNT(1) > 0 really means here.  The query computes the total number of
distinct values of a column and filters it by checking the count(1)  (which
is equivalent to count(*)) ?  There is only 1 value returned.

Drill fails to plan the query, which is a bug - pls file a JIRA -  but the
following alternate versions of the query seem more meaningful (I think
both of these should run successfully):
  1.  SELECT  column1,  COUNT(distinct column2) FROM ...  GROUP BY column1
HAVING COUNT(*) > 0
  2.  SELECT  COUNT(distinct column2) FROM .... HAVING COUNT(distinct
column2) > 0

Aman

On Wed, Dec 10, 2014 at 12:29 PM, Christopher Matta <cm...@mapr.com> wrote:

> Tableau is using the following query to get the distinct count of a
> measure:
>
> SELECT COUNT(DISTINCT `custview`.`age`) AS `ctd_age_ok` FROM `mfs.views`.`nestedclickview` `nestedclickview` INNER JOIN `mfs.views`.`custview` `custview` ON (`nestedclickview`.`cust_id` = `custview`.`cust_id`) HAVING (COUNT(1) > 0);
>
> And it fails on 0.06r2.
>
> Interestingly if I remove the HAVING(COUNT(1)>0) statement at the end it
> works:
>
> : jdbc:drill:zk=172.16.1.175:5181,172.16.1.1> SELECT COUNT(DISTINCT `custview`.`age`) AS `ctd_age_ok` FROM `mfs.views`.`nestedclickview` `nestedclickview` INNER JOIN `mfs.views`.`custview` `custview` ON (`nestedclickview`.`cust_id` = `custview`.`cust_id`);
>
> +------------+
> | ctd_age_ok |
> +------------+
> | 5          |
> +------------+
> 1 row selected (4.776 seconds)
>
> Is this a bug, or a malformed query from Tableau?
>
> See the error log attached for more detail.
>
> Chris Matta
> cmatta@mapr.com
> 215-701-3146
> ​
>