HIVE SQL:从庞大的数据库中仅选择一个值的最快方法是啥

Posted

技术标签:

【中文标题】HIVE SQL:从庞大的数据库中仅选择一个值的最快方法是啥【英文标题】:HIVE SQL: what is the fastest way to select only one value from a huge databaseHIVE SQL:从庞大的数据库中仅选择一个值的最快方法是什么 【发布时间】:2020-01-19 12:37:30 【问题描述】:

背景:有一个基于HIVE的定制SQL数据库,很多SQL函数不能在那里工作,例如SELECT */current_date/'datetime'/'relativedelta'等,我能找到的唯一解决方案是下面列出:

我想得到last_year_today的日期,一行就够了。

SELECT
    (time - 10000) AS this_day_of last year
FROM
    table
WHERE
   <a customized funciton works like datetime.now() in INT 'YYYYMMDD' format>
LIMIT 1
-- i've tried "SELECT TOP 1...", failed.

太慢了,1 多分钟。我想知道是否有一种更快的方法来只选择一个值?谢谢!

【问题讨论】:

【参考方案1】:

我有点困惑。为什么不简单地运行这样的查询?

select add_months(current_date, -12)

如果您需要 yyyymmdd 格式,请使用您的函数或直接计算:

select (year(current_date) - 1) * 10000 + month(current_date) * 100 + day(current_date)

【讨论】:

因为数据库是自定义的,很多SQL函数,比如current_date,都不能在那里工作。 :( 。唯一的解决方案是尽可能快地运行我的 SELECT 。

以上是关于HIVE SQL:从庞大的数据库中仅选择一个值的最快方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

如何从返回多个 OUT 值的过程中仅访问一个 OUT 值?

SQL - 在特定条件下从多行中仅选择一个值

查找第二大值的最简单的 SQL 查询是啥?

在 hive/impala sql 中按日期获取数据,

在 Oracle 中仅选择没有 Null 值的列

在 SQL 中仅选择特定字符之后的数字字符