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

问题描述 投票:0回答:1

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

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;

在凤凰城这样的事情可能吗?

sql hbase phoenix
1个回答
0
投票

您可以按照phoenix文档中的指定执行upsert-select。

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

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

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

例如,你可以做这样的事情

UPSERT INTO FOO(RK,AGE,CITY,NAME)选择RK,AGE,CITY,REGEX_REPLACE('MATT','MATT','CARTER')来自FOO,其中名称='MATT';

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

© www.soinside.com 2019 - 2024. All rights reserved.