如何在beamSql中连接2个或更多列

时间:2018-03-16 11:32:09

标签: apache-beam

我正在尝试使用分隔符连接2列作为“。” 代码:

PCollection<BeamRecord> first = apps.apply(BeamSql.query(
            "SELECT *,('CatLib' || 'ProdKey') AS CatLibKey from PCOLLECTION"));

如何指定2列之间的分隔符?

2 个答案:

答案 0 :(得分:1)

我会说

SELECT
    COALESCE(CatLib, '') || '.' || COALESCE(ProdKey, '') AS CatLibKey,
    (any other columns here...)
FROM
    PCOLLECTION;

但是在SQL中没有“选择除X列之外的所有内容”或“选择其他所有内容”,因此您必须记下要选择的列的每个名称。

答案 1 :(得分:0)

谢谢@Impulse The Fox。 我已将查询修改为:

PCollection<BeamRecord> first = apps.apply(BeamSql.query(
            "SELECT Outlet, CatLib, ProdKey, Week, SalesComponent, DuetoValue, PrimaryCausalKey, CausalValue, ModelIteration, Published, (CatLib || '.' || ProdKey) AS CatLibKey from PCOLLECTION"));

这完美无缺。