You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@hive.apache.org by Raj Hadoop <ha...@yahoo.com> on 2014/02/01 06:19:53 UTC
Find a date that is in the range of any array dates in Hive
Hi,
I have the following requirement from a Hive table below.
CustNumActivityDatesRates
10010-Aug-13,12-Aug-13,20-Aug-1310,15,20
The data above says that
From 10 Aug to 11 Aug the rate is 10.
From 12 Aug to 19 Aug the rate is 15.
From 20-Aug to till date the rate is 20.
Note : The order is maintained in 'ActivityDates' and 'Rates'.
From the above table , I need to find the rate on say a given date 15-Aug-13. In the above case , the rate for 15-Aug-13 is 15.
How should I get this result in Hive.
I was reading about a Generic UDF and was thinking to write one like this.
The Generic UDF takes two inputs (input date , array of input dates ) . the output should be (an int )to return the element number in the array.
In the above case
Generic UDF(15-Aug-13,10-Aug-13,12-Aug-13,20-Aug-13) should return the 2nd element in array - 2.
Please advise if there is an alternative solution or if the above solution works. I have never written a UDF or Generic UDF and would need some help from the forum members. Please advise.
Regards,
Raj
Re: Find a date that is in the range of any array dates in Hive
Posted by Matouk IFTISSEN <ma...@ysance.com>.
Hé
You can use explode function that is an udf in hive: like this
SELECT explode(ActivityDates) AS ActivityDates FROM myMapTable;
and think who to map the result whith rates ;)
Regadrs.
Matouk
2014-02-01 Raj Hadoop <ha...@yahoo.com>:
> Hi,
>
>
> I have the following requirement from a Hive table below.
>
> CustNum ActivityDates Rates
> 100 10-Aug-13,12-Aug-13,20-Aug-13 10,15,20
>
> The data above says that
>
> From 10 Aug to 11 Aug the rate is 10.
> From 12 Aug to 19 Aug the rate is 15.
> From 20-Aug to till date the rate is 20.
>
> Note : The order is maintained in 'ActivityDates' and 'Rates'.
>
> From the above table , I need to find the rate on say a given date
> 15-Aug-13. In the above case , the rate for 15-Aug-13 is 15.
>
> How should I get this result in Hive.
>
> I was reading about a Generic UDF and was thinking to write one like this.
> The Generic UDF takes two inputs (input date , array of input dates ) .
> the output should be (an int )to return the element number in the array.
>
> In the above case
> Generic UDF(15-Aug-13,10-Aug-13,12-Aug-13,20-Aug-13) should return the
> 2nd element in array - 2.
>
>
> Please advise if there is an alternative solution or if the above solution
> works. I have never written a UDF or Generic UDF and would need some help
> from the forum members. Please advise.
>
>
> Regards,
> Raj
>
--
*Matouk IFTISSEN | Consultant BI & Big Data [image: http://www.ysance.com] *
24 rue du sentier - 75002 Paris - www.ysance.com <http://www.ysance.com/>
Mob : +33 6 78 51 18 69 || Fax : +33 1 73 72 97 26
*Ysance sur* :*Twitter* <http://twitter.com/ysance>* | Facebook
<https://www.facebook.com/pages/Ysance/131036788697> | Google+
<https://plus.google.com/u/0/b/115710923959357341736/115710923959357341736/posts>
| LinkedIn
<http://www.linkedin.com/company/ysance> | Newsletter
<http://www.ysance.com/nous-contacter.html>*
*Nos autres sites* : *ys4you* <http://wwww.ys4you.com/>* | labdecisionnel
<http://www.labdecisionnel.com/> | decrypt <http://decrypt.ysance.com/>*