如何识别存储在RECORD或REPEATED属性中的BigQuery数据



我正在尝试构建一个数据流管道,用于从BigQuery表中取消标识数据。我正在构建com.google.privaty.dlp.v2.Table对象,并将其传递给ContentItem,如下所示:

List<Field> fieldList = new ArrayList<>(
bigquery
.getTable(table)
.getDefinition()
.getSchema()
.getFields());

List<Table.Row> rows = new ArrayList<>();
for (FieldValueList bigQueryRowItem : bigquery
.listTableData(table)
.getValues()) {
Table.Row row = convertBigQueryRowToTableRow(bigQueryRowItem);
rows.add(row);
}
Table dlpTable = Table
.newBuilder()
.addAllHeaders(convertFieldsToHeaders(fieldList))
.addAllRows(rows)
.build();

但不幸的是,这个fieldList只包含一级BigQuery属性,没有RECORD或REPEATED属性。请告诉我如何有效地从表中获取所有字段的名称,包括RECORD/REEATED,以及如何有效地将BigQuery值转换为表。行?谢谢

目前这是通过两种方式之一完成的:

将字段展平为列。所以创纪录的

RecordA {Field1, Field2} becomes 2 columns, RecordA.Field1 and RecordA.Field2

对于重复的字段,您可以执行相同的操作,也可以将字段值合并到一个单元格中。

RecordA { Field1: {value1,value2,value3] } becomes 3 columns .... RecordA.Field1[0], RecordA.Field2[1], and RecordA.Field3[2]

相关内容

  • 没有找到相关文章

最新更新