使用条件将数据插入配置单元时出错

Posted

技术标签:

【中文标题】使用条件将数据插入配置单元时出错【英文标题】:error while inserting data into hive using condition 【发布时间】:2019-08-28 13:37:15 【问题描述】:

嗨,我需要将值插入一个新表(由 3 个列组成),其中我有一个名为 verad_id 的列,它有 250 个值,现在在插入数据时,我需要加载 6 个 verad_id 的所有值,它的值为零用于 reage 字段。

示例主表:-

verad_id   reage  value
 998        0      38
 8484       4      43
 998        3      33
 432        0      23
 233        43     26
 556        0      53
 432        9      33

现在我需要为 verad_id 998 和 432 插入期望值,其 reage 值为 0

插入表格后应该是这样的

verad_id   reage  value
 8484       4      43
 998        3      33
 233        43     26
 556        0      53
 432        9      33

我试过了,但没有用

案例1:-

insert into finaltable
select
verad_id,
reage,
value
from main_table where  verad_id = '998' or verad_id = '432' and reage != 0;

试过了,但这个查询不起作用

案例2:-

insert into finaltable
select
verad_id,
reage,
value
from main_table where  verad_id in ( '998' , '432') and reage != 0;

在这种情况下,我能够加载 reage 不等于 0 的 verad_id '998' 和 '432' 的数据,这里我缺少其他 verad_id 的数据。

谁能帮我解决这个问题

【问题讨论】:

value 列有多重要,它的值应该与reage 值配对还是无关紧要? @Peter yes value 列很重要,因为我需要根据与 reage 配对的值对该列进行一些攻击。 【参考方案1】:

简单地说,您要做的是从表 main_table 中获取分组数据,每个组按 DESC 顺序按列 reage 排序。

获得这些结果后,您希望将它们插入名为 finaltalbe 的表中

在这种情况下,您可以使用子选择来定义结果的显示顺序,然后围绕该顺序选择一个组,mysql 将显示每个分组集中第一行的值。

INSERT INTO finaltable
  SELECT * FROM (SELECT * FROM main_table ORDER BY `reage` DESC) AS `sorted` GROUP BY `verad_id`;

这将导致表 finaltable 包含以下数据

| verad_id | reage | value |
|----------|-------|-------|
|      233 |    43 |    26 |
|      432 |     9 |    33 |
|      556 |     0 |    53 |
|      998 |     3 |    33 |
|     8484 |     4 |    43 |

【讨论】:

以上是关于使用条件将数据插入配置单元时出错的主要内容,如果未能解决你的问题,请参考以下文章

将数据插入 Hive 分区表时出错

通过 Kylin 构建多维数据集创建配置单元表时出错

尝试从 WPF 中的 Access 数据库中获取给定条件的日期时出错

将数据插入 HIVE 表时出错

使用 Pymssql 将数据插入 MS SQL DB 时出错

使用分区写入配置单元表时出错