hive - 在值范围之间将一行拆分为多行

2024-05-20

我在下面有一张表,想按从开始列到结束列的范围拆分行。

即 id 和 value 应该对开始和结束之间的每个值重复(包括两者)

--------------------------------------
id      | value   | start     | end
--------------------------------------
1       | 5       | 1         | 4
2       | 8       | 5         | 9
--------------------------------------

所需输出

--------------------------------------
id      | value   | current
--------------------------------------
1       | 5       | 1
1       | 5       | 2
1       | 5       | 3
1       | 5       | 4

2       | 8       | 5
2       | 8       | 6
2       | 8       | 7
2       | 8       | 8
2       | 8       | 9
--------------------------------------

我可以在 java/python 中编写自己的 UDF 来获得此结果,但想检查是否可以使用任何现有的 hive UDF 在 Hive SQL 中实现

提前致谢。


这可以通过 Hive 不支持的递归公用表表达式来完成。

一种选择是创建一个数字表并使用它在开始和结束之间生成行。

create table numbers
location 'hdfs_location' as 
select row_number() over(order by somecolumn) as num
from some_table --this can be any table with the desired number of rows 
;

--Join it with the existing table 
select t.id,t.value,n.num as current
from tbl t
join numbers n on n.num>=t.start and n.num<=t.end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hive - 在值范围之间将一行拆分为多行 的相关文章

随机推荐

  • 在 WooCommerce 中添加到购物车之前清空购物车

    我正在使用 WP 作业管理器和 Woo Subscriptions Now 最初 我选择了一个套餐 Woo Subscription 然后我添加了所有细节 但没有提交 回到网站 所以要再次购买 我需要选择一个套餐 于是我选择了套餐并填写了详
  • 识别操作系统

    我在 Intel 编译器上的 Fortran 90 代码取决于它运行的操作系统 例如 if OS win7 then do X else if OS linux then do y end if 我如何以编程方式执行此操作 您可以使用预处理
  • jquery 验证错误位置

    这看起来很简单 但我无法弄清楚 我正在使用 jquery 验证插件 我验证所有文件 但我想要的是在输入文本行中显示验证消息警报 例如在电子邮件输入中 请填写电子邮件地址 但现在它出现在所有字段下 在我的html中
  • 如何使用 Plotly 中的直方图将所有离群值分入一个分箱?

    所以问题是 我可以在 Plotly 中绘制直方图 其中所有大于某个阈值的值都将被分组到一个箱中吗 所需的输出 但使用标准情节Histogram类我只能得到这个输出 import pandas as pd from plotly import
  • 如何从 Retrofit2 获取字符串响应?

    我正在做 android 正在寻找一种方法来执行超级基本的 http GET POST 请求 我不断收到错误 java lang IllegalArgumentException Unable to create converter for
  • 重写 URL,将 ID 替换为查询字符串中的标题

    我对 mod rewrite 很陌生 但我做了一些搜索 但找不到这个问题的答案 我有一个网站 它只有一个 PHP 页面 根据查询字符串中传递给它的 ID 提供数十页内容 我想重写 URL 以便此 ID消失并替换为从数据库中提取的页面标题 例
  • 使用 EWS 托管 API 为其他用户创建约会?

    在 EWS 托管 API 中 可以轻松地为特定用户创建约会 ExchangeService service new ExchangeService service Credentials new NetworkCredentials adm
  • 从 ffmpeg 获取实时输出以在进度条中使用(PyQt4,stdout)

    我已经查看了很多问题 但仍然无法完全弄清楚 我正在使用 PyQt 并且希望能够运行ffmpeg i file mp4 file avi并获取流式输出 以便我可以创建进度条 我看过这些问题 ffmpeg可以显示进度条吗 https stack
  • SQLite + SpatiaLite 问题

    我正在尝试使用 System Data SQLite 提供程序从 C 访问 SpatiaLite 当我尝试加载 SpatiaLite 扩展时 我总是得到 System Data SQLite SQLiteException SQLite e
  • 具有 Firebase (FCM) 推送通知的 Node js

    我正在使用 Node js 开发 REST api 并且有一个休息端点来发送 firebase 推送通知 我的代码如下 const bodyParser require body parser var cors require cors v
  • Renderscript 示例构建错误

    所以我想尝试使用 RenderScript 的示例 并在 Eclipse 中导入了 HelloWorld 但它给了我这样的错误 2011 10 25 13 10 48 HelloWorld home mileoresko workspace
  • 如何使用open xml sdk获取word文档的所有合并字段

    我是初学者打开xml sdk 我试图找出文档的所有合并字段 但我没有得到页眉和页脚合并字段 任何人都可以提出一个可行的解决方案吗 我正在尝试这样的事情 foreach FieldCode field in docGenerated Main
  • 使用位操作查找字符串中的重复项时出现问题

    我认为 我已经实现了正确的逻辑来查找字符串是否包含重复项 但即使在终端中没有打印任何内容 我也无法理解为什么会这样 那么我在这个程序中犯了哪些错误 任何人都可以解释为什么它不起作用 include
  • 如何以编程方式断开拨出呼叫

    我使用以下代码以编程方式断开呼叫 但它不起作用 private void callDisconnect try TelephonyManager manager TelephonyManager this getSystemService
  • 提升条件变量 - 对“notify_one”的调用是否堆栈?

    在使用 Boost 线程的单个生产者 单个消费者应用程序中 如果生产者线程多次调用cond var notify one 在消费者线程调用之前cond var wait lock 是否会额外致电notify one被堆叠起来 这样每次调用
  • 使用 SSRS ASP.NET ReportViewer 和 Web 服务进行 Windows 身份验证

    我目前在使用 SSRS 时遇到一些问题 我有一个使用 Windows 身份验证的 ASP NET 网站 这工作正常 我知道网站当前用户是当前登录的用户 此站点上有一个 Web 表单 ReportViewer 当我不设置凭据时 这工作正常 然
  • 面向对象编程语言中的引用默认情况下是否应该不可为空? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 Html.ValidationSummary 中指定数据注释错误的顺序

    我使用以下命令在表单上显示错误 我的域对象继承自基类 我发现基类数据注释属性显示在列表底部 这违背了它们在我的表单中出现的顺序 有什么方法可以指定错误的显示顺序吗 Example public class ClassA Required p
  • 防止浮动换行,直到元素达到最小宽度

    我有可变宽度的 HTML 布局 内容左侧有一个固定宽度的菜单 div 可变宽度 由 css max width 和 min width 设置 对于非常窄的浏览器窗口 我希望内容包裹在菜单下方 我目前通过设置来实现这一点float left在
  • hive - 在值范围之间将一行拆分为多行

    我在下面有一张表 想按从开始列到结束列的范围拆分行 即 id 和 value 应该对开始和结束之间的每个值重复 包括两者 id value start end 1 5 1 4 2 8 5 9 所需输出 id value current