hive - 蜂巢表匹配并在不同的列中选择值
问题描述
我有一个输入表:
c_no acc_no acc_line_no ref_acc ref_acc_item bt_no
4 a12 50 39080 40 0
4 a13 10 39080 10 0
4 a14 20 39080 20 0
4 a15 30 39080 21 20
4 a16 40 39080 30 0
4 a17 31 0 20
问题:ref_acc_item 和 bt_no 对于相同的 c_no 为零或空白;
解析度:
如果 ref_item 为空,则 bt_no 中的值 20 需要与 acc_line_no 匹配(此处第 3 行匹配 20)并将 ref_acc 设置为第 3 行中的 ref_acc 值,并将 ref_acc_item 设置为 20,如 bt_no
输出表:
c_no acc_no acc_line_no ref_acc ref_acc_item bt_no
4 a12 50 39080 40 0
4 a13 10 39080 10 0
4 a14 20 39080 20 0
4 a15 30 39080 21 20
4 a16 40 39080 30 0
4 a17 31 39080 20 20
请帮助我在 Hive 中实现这一目标。提前致谢
解决方案
您可以通过if
声明轻松做到这一点
select
c_no,
acc_no,
acc_line_no,
ref_acc,
if(ref_acc_item = "0" or ref_acc_item = "", bt_no, ref_acc_item ),
bt_no
from yourtable
推荐阅读
- javascript - 应用程序洞察力未捕获来自 Jmeter 的请求
- r - 如何使用 map 函数将向量中的子字符串顺序替换为 R 中另一个向量中的字符串?
- amazon-dynamodb - AppSync 中的 DynamoDB ReturnValues UPDATED_OLD
- github - 分叉仓库未更新时如何在 github 上创建 PR 请求?
- ios - 在geoloaction的getCurrentPostion方法中获取航向值-1
- url - 我需要重写一条规则以从 url 中删除类别 id - nginx
- javascript - 谁能解释为什么最后设置超时打印?
- c# - 处理向量/矩阵数学的最佳实践?
- javascript - 如何在jspdf中添加中文字体
- javascript - React Router,保护静态图片