Hi Edward,
That's possibly due to using unix_timestamp (although the error message
seems misleading if that proves true) . It's technically correct it
shouldn't be flagged as deterministic because every time you call it
you'll get a different answer as time progresses. However reality is I
just want it called 1 time which is during planning and if I flag is as
deterministic this is exactly what happens so you can do this:
@UDFType(deterministic = true)
public class UnixTimeStamp extends GenericUDFUnixTimeStamp {
// Making the udf deterministic which is kind of cheating but makes
partition pruning work.
}
And then register the udf like you normally would.
If that's not helping do some creative sub-querying might help like
FROM (select * from entry_hourly_v3 where dt=2015101517 )
entry_hourly_v3 INNER JOIN article_meta ON
Bennie.
On 15/10/15 23:06, Edward Capriolo wrote:
So I have strict mode on and I like to keep it that way.
I am trying to do this query.
INSERT OVERWRITE TABLE vertical_stats_recent PARTITION (dt=2015101517)
SELECT ...
FROM entry_hourly_v3 INNER JOIN article_meta ON
entry_hourly_v3.entry_id = article_meta.entry_id
INNER JOIN channel_meta ON
channel_meta.section_name = article_meta.channel
WHERE entry_hourly_v3.dt=2015101517
AND article_meta.dt=2015101517
AND channel_meta.hitdate=20151015
AND article_meta.publish_timestamp > ((unix_timestamp() * 1000) -
(1000 * 60 * 60 * 24 * 2))
GROUP
entry_hourly_v3, channel_meta and article_meta are partitioned tables.
*Your query has the following error(s):*
Error while compiling statement: FAILED: SemanticException [Error
10041]: No partition predicate found for Alias "entry_hourly_v3" Table
"entry_hourly_v3"
I also tried putting views on the table and I had no luck.
Is there any way I can do this query without turning strict mode off?