Я создаю шаблон потока данных Google в Python:
query = "#standardSQL" + """
SELECT
Frame.Serial,
Frame.Fecha,
Frame.Longitud,
Frame.Latitud,
ARRAY_AGG (CONCAT (ID, '-', Valor) ORDER BY ID) AS Resumen
FROM <...>
TABLE_SCHEMA = 'Serial:STRING,Fecha:DATETIME,Longitud:STRING,Latitud:STRING,Resumen:STRING'
| 'Read from BQ' >> beam.io.Read(beam.io.BigQuerySource(query=query,dataset="xxx",use_standard_sql=True))
| 'Write transform to BigQuery' >> WriteToBigQuery('table',TABLE_SCHEMA)
Проблема
Это не удается из-за поля Resumen является массивом:
Указан массив для неповторяющегося поля.
Что я тестировал
Создать таблицу непосредственно в интерфейсе BigQuery с предложением:
CREATE TABLE test (Resumen ARRAY<STRING>)
Это работает.Таблица создается с помощью:
- Тип:
string
- Режим:
Repeated
Измените TABLE_SCHEMA изапустить конвейер:
TABLE_SCHEMA ='Serial:STRING,Fecha:DATETIME,Longitud:STRING,Latitud:STRING,Resumen:ARRAY<STRING>'
С ошибкой:
"Invalid value for: ARRAY\u003cSTRING\u003e is not a valid value".
Как и должно быть TABLE_SCHEMA
досоздать таблицу и использовать с beam.io.WriteToBigQuery()
?