Hive 找出维度 table 中丢失的记录?

Hive find out missing records in dimension table?

我想找出哪个人没有使用 Hive 安装所需的软件 SQL。

这是脚本:

  1. tablet1中的记录是不同人实际安装的软件。
  2. tablet2中的记录包括所有必需的软件。
CREATE TABLE IF NOT EXISTS t1 (name STRING, install STRING);
CREATE TABLE IF NOT EXISTS t2 (need_install STRING);
INSERT INTO TABLE t1 VALUES('Tom', 'Chrome'),('Tom', 'Ins'),('Tom', 'Cnn'),('Jane', 'Facebook');
INSERT INTO TABLE t2 VALUES('Chrome'),('Ins'),('Facebook');

想要的结果

Tom  Facebook      # Tom have not installed the required software is `Facebook`    
Jane Chrome/Ins    # Jane have not installed the required software is `chrome` and `Ins`    

已解决


SELECT *
FROM(
        SELECT *
        FROM(
                SELECT DISTINCT NAME
                FROM t1
            ) tmp1
            CROSS JOIN t2
    ) tmp2
    LEFT JOIN t1 ON tmp2.name = t1.name
    AND tmp2.need_install = t1.install
WHERE t1.name IS NULL;  
 SELECT X.NAME,T2.need_install FROM
 (
   SELECT DISTINCT NAME
   FROM T1 
)AS X
CROSS JOIN T2 
  EXCEPT 
SELECT T.NAME,T.INSTALL
FROM T1 AS T

不确定这在 Hive 中是否有效,但在 SQL 服务器中会产生所需的结果