As an example : If I run my query above removing the arg the following is thrown.
FAILED: SemanticException Failed to breakup Windowing invocations into Groups. At least 1 group must only depend on input columns. Also check for circular dependencies. Underlying error: org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException: One or more arguments are expected. Similar issue and fix here: http://www.marshut.com/rqvpz/use-rank-over-partition-function-in-hive-11.html Even if it didn't require an arg it still doesn't explain my anomalous output. On Wed, Jul 24, 2013 at 11:28 PM, j.barrett Strausser < j.barrett.straus...@gmail.com> wrote: > That isn't true. If you try to run the above HIVE without an argument, it > will throw an exception. I have seen other users replicate this problem as > well. > > I can file a JIRA if someone can confirm that my query should work. > > > On Wed, Jul 24, 2013 at 11:02 PM, manishbh...@rocketmail.com < > manishbh...@rocketmail.com> wrote: > >> Analytical function doesn't expect any argument. Rank() itself enough to >> sequence based on the window you have defined in partition by. So >> >> Rank() over (partition by cmscustid order by orderdate) >> >> Should work as long as I have wrote right syntax for hive. >> >> Sent via Rocket from my HTC >> >> ----- Reply message ----- >> From: "j.barrett Strausser" <j.barrett.straus...@gmail.com> >> To: <user@hive.apache.org> >> Subject: Semantics of Rank. >> Date: Thu, Jul 25, 2013 1:08 AM >> >> >> Thanks for the reply. Perhaps my misunderstanding of the relation between >> rank and the windowing function is wrong. >> >> What I want to achieve for the following is : For a given customer id, >> sort his orders. I thought the below would work. >> >> SELECT eh.cmsorderid, eh.orderdate, RANK(orderdate) w FROM order_data eh >> window w as (partition by cmscustid order by orderdate); >> >> The rank function instead returns the rank of the order date over all all >> order dates. >> >> Example snippet from above >> >> Actual : >> >> 6758783 27APR2012 94 >> 6758783 23JUN2012 95 >> 6758785 14DEC2012 96 >> 6758795 18DEC2011 97 >> 6758796 06MAY2012 98 >> 6758798 24MAR2013 99 >> 6758799 23NOV2012 100 >> >> >> Expected : >> >> 6758783 27APR2012 1 >> 6758783 23JUN2012 2 >> 6758785 14DEC2012 1 >> 6758795 18DEC2011 1 >> 6758796 06MAY2012 1 >> 6758798 24MAR2013 1 >> 6758799 23NOV2012 1 >> >> >> -b >> >> >> >> >> On Wed, Jul 24, 2013 at 3:17 PM, Shahar Glixman <sglix...@outbrain.com >> >wrote: >> >> > the argument to rank is simply some value, whereas the rank function >> > compare this value >> > to the previous value received, if value is same, rank returns ++index, >> > otherwise, rank return 1. >> > pseudo code: >> > >> > class Rank { >> > int index; >> > Object previousValue = null; >> > int evaluate(Object value) { >> > if (value == previousValue) { >> > return ++index; >> > } >> > previousValue = value; >> > index = 1; >> > return 1; >> > } >> > >> > >> > On Wed, Jul 24, 2013 at 9:59 PM, j.barrett Strausser < >> > j.barrett.straus...@gmail.com> wrote: >> > >> >> It seems as though I am required to pass in an argument to RANK(). >> >> >> >> What is the effect of passing this argument in ? >> >> >> >> In a RANK function the output for RANK should be the number of rows >> >> preceding >> >> a row in a given window. As windows are specified by the partition and >> >> order by fields I don't understand the effect of passing in an arg to >> RANK >> >> >> >> Are the other non-aggregate function similar? Meaning : Cume_dist, >> Ntile >> >> -- >> >> >> >> >> >> https://github.com/bearrito >> >> @deepbearrito >> >> >> > >> > >> > The above terms reflect a potential business arrangement, are provided >> solely >> > as a basis for further discussion, and are not intended to be and do not >> > constitute a legally binding obligation. No legally binding obligations >> will >> > be created, implied, or inferred until an agreement in final form is >> executed >> > in writing by all parties involved. >> > >> > This email and any attachments hereto may be confidential or privileged. >> > If you received this communication by mistake, please don't forward it >> > to anyone else, please erase all copies and attachments, and please let >> > me know that it has gone to the wrong person. Thanks. >> > >> >> >> >> -- >> >> >> https://github.com/bearrito >> @deepbearrito >> > > > > -- > > > https://github.com/bearrito > @deepbearrito > -- https://github.com/bearrito @deepbearrito