hive-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Meagher <john.meag...@gmail.com>
Subject Re: Problème with min function in HiveQL
Date Thu, 29 Aug 2013 18:53:02 GMT
Aggregate functions need to go in a HAVING clause instead of the WHERE
clause.  WHERE clauses are applied prior to aggregation, HAVING is
applied post aggregation.

select ...
from ...
where  some row level filter
group by ...
having some aggregate level filter


On Thu, Aug 29, 2013 at 2:49 PM, Jason Dere <jdere@hortonworks.com> wrote:
> Looks like the issue is the use of min() within the WHERE clause - the place
> where the exception is being thrown has the following comment:
>         // UDAF in filter condition, group-by caluse, param of funtion, etc.
>
>
> On Aug 29, 2013, at 3:01 AM, Jérôme Verdier <verdier.jerome66@gmail.com>
> wrote:
>
> Hi everybody,
>
> I am coding some HiveQL script to do some calculations.
>
> I have a problem with the min() function.
>
> My hive script is below :
>
> INSERT INTO TABLE default.THM_CA_RGRP_PRODUITS_SEM
>
>         SELECT
>         '${hiveconf:in_co_societe}'               as co_societe,
>         '${hiveconf:in_co_an_semaine}'            as co_an_semaine,
>         a.type_entite                             as type_entite,
>         a.code_entite                             as code_entite,
>         a.type_rgrp_produits                      as type_rgrp_produits,
>         a.co_rgrp_produits                        as co_rgrp_produits,
>         SUM(a.MT_CA_NET_TTC)                      as MT_CA_NET_TTC,
>         SUM(a.MT_OBJ_CA_NET_TTC)                  as MT_OBJ_CA_NET_TTC,
>         SUM(a.NB_CLIENTS)                         as NB_CLIENTS,
>         SUM(a.MT_CA_NET_TTC_COMP)                 as MT_CA_NET_TTC_COMP,
>         SUM(a.MT_OBJ_CA_NET_TTC_COMP)             as MT_OBJ_CA_NET_TTC_COMP,
>         SUM(a.NB_CLIENTS_COMP)                    as NB_CLIENTS_COMP
>       from
>         default.THM_CA_RGRP_PRODUITS_JOUR a
>       JOIN default.CALENDRIER b
>       -- A verifier
>       WHERE CAST(a.dt_jour AS TIMESTAMP) >=
> CAST(min(UNIX_TIMESTAMP(b.dt_jour)) AS BIGINT)
>       AND CAST(a.dt_jour AS TIMESTAMP) < CAST(min(b.dt_jour)+1 AS TIMESTAMP)
>       AND a.co_societe = '${hiveconf:in_co_societe}'
>       AND ('${hiveconf:flg_reprise_entite}' = 0 OR a.type_entite<>'MAG')
>       GROUP BY
>         a.type_entite,
>         a.code_entite,
>         a.type_rgrp_produits,
>         a.co_rgrp_produits;
>
> And, when i try to launch this, i get this error :
>
> FAILED: SemanticException [Error 10128]: Line 20:62 Not yet supported place
> for UDAF 'min'
>
> Obviously, there is a problem with min() function.
>
> How can i pass through this error?
>
> Thanks for your help
>
>
>
> CONFIDENTIALITY NOTICE
> NOTICE: This message is intended for the use of the individual or entity to
> which it is addressed and may contain information that is confidential,
> privileged and exempt from disclosure under applicable law. If the reader of
> this message is not the intended recipient, you are hereby notified that any
> printing, copying, dissemination, distribution, disclosure or forwarding of
> this communication is strictly prohibited. If you have received this
> communication in error, please contact the sender immediately and delete it
> from your system. Thank You.

Mime
View raw message