在phoenix中,如何使用group by从select中进行upsert并将一列的值放入数组列中?

时间:2018-04-08 00:55:05

标签: sql hbase phoenix

我有两个表,一个定义为:

CREATE TABLE DESTINATION_TABLE (
  EFFECTIVE_DATE DATE NOT NULL,
  UID UNSIGNED_LONG NOT NULL,
  SOURCES VARCHAR[],
  CONSTRAINT PK_DT PRIMARY KEY (EFFECTIVE_DATE,UID)
);

我想从另一个表中插入这个(伪代码):

UPSERT INTO DESTINATION_TABLE
SELECT
  EFFECTIVE_DATE,
  NEXT VALUE FOR CIBC_COPY.AUM_AGGREGATES_SEQ AS "UID",
  (SELECT DISTINCT ACCOUNT_ID) AS SOURCES
FROM SOURCE_TABLE
GROUP BY EFFECTIVE_DATE;

凤凰有可能这样吗?

1 个答案:

答案 0 :(得分:0)

您可以按照phoenix文档中的说明进行upsert选择。

https://phoenix.apache.org/language/index.html#upsert_select

  

UPSERT INTO test.targetTable(col1,col2)从test.sourceTable选择SELECT col3,col4 WHERE col5 <100   UPSERT INTO foo SELECT * FROM栏;

这也可以用于更新表中的多行。在这种情况下,源表和目标表将相同。

例如,您可以做类似的事情

  

UPSERT INTO FOO(RK,AGE,CITY,NAME)从FOO WHERE NAME ='MATT'中选择RK,AGE,CITY,REGEX_REPLACE('MATT','MATT','CARTER');

这将在人员姓名为MATT的所有行中将姓名从MATT更新为CARTER。