繁体   English   中英

如何将输入数据中的一组字段 select 作为光束中重复字段的数组 SQL

[英]How to select a set of fields from input data as an array of repeated fields in beam SQL

问题陈述:

我有一个带有以下字段的输入 PCollection:

{
   firstname_1,
   lastname_1,
   dob,
   firstname_2,
   lastname_2, 
   firstname_3,
   lastname_3,
}

然后我执行 Beam SQL 操作,使得结果 PCollection 的 output 应该像

 ----------------------------------------------
   name.firstname |  name.lastname | dob
 ---------------------------------------------- 
      firstname_1 |  lastname_1    | 202009
      firstname_2 |  lastname_2    | 
      firstname_3 |  lastname_3    |
-----------------------------------------------

准确地说:

array[
    (firstname_1,lastname_1,dob),
    (firstname_2,lastname_2,dob),
    (firstname_3,lastname_3,dob)
]

这是我执行 Beam SQL 的代码片段:

PCollectionTuple tuple=
    PCollectionTuple.of(new TupleTag<>("testPcollection"), testPcollection);

PCollection<Row> result = tuple
    .apply(SqlTransform.query(
        "SELECT array[(firstname_1,lastname_1,dob), (firstname_2,lastname_2,dob), (firstname_3,lastname_3,dob)]"));

我没有得到正确的结果。

有人可以指导我如何查询 Beam SQL 中的重复字段数组吗?

您的 SQL 查询有一些错误。

  1. 您已将输入命名为 SQL 查询testPcollection 您的 SQL 查询不 select FROM testPcollection 让我们假设您的意思是FROM testPcollection
  2. 您在预期的 output 和查询中都使用了语法(firstname_1, lastname_1, doc) 这不是任何有效的 SQL 表达式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM