Я передаю журналы Stackdriver в Bigquery, и они заканчиваются в поле textPayload
в следующем формате:
member_id_hashed=123456789,
member_age -> Float(37.0,244),
operations=[92967,93486,86220,92814,92943,93279,...],
scores=[3.214899,2.3641025E-5,2.5823574,2.3818345,3.9919448,0.0,...],
[etc]
Затем я определяю запрос / представление для таблицы с необработанным журналированиемследующие записи:
SELECT
member_id_hashed as member_id, member_age,
split(operations,',') as operation,
split(scores,',') as score
FROM
(
SELECT
REGEXP_EXTRACT(textPayload, r'member_id=([0-9]+)') as member_id_hashed,
REGEXP_EXTRACT(textPayload, r'member_age -> Float\(([0-9]+)') as member_age,
REGEXP_EXTRACT(textPayload, r'operations=\[(.+)') as operations,
REGEXP_EXTRACT(textPayload, r'scores=\[(.+)') as scores
from `myproject.mydataset.mytable`
)
, в результате чего получается одна строка с двумя полями и двумя массивами:
![enter image description here](https://i.stack.imgur.com/j5D13.png)
В идеале, для дальнейшегоанализ, я хотел бы, чтобы два массива были вложенными (например, operation.id и operation.score) или выравнивали массивы построчно, сохраняя позиции (т.е. строка 1 массива 1 должна появляться рядом со строкой 1 массива 2 и т. д.):
![enter image description here](https://i.stack.imgur.com/yb5VY.png)
Может кто-нибудь указать мне способ сделать вложенные поля из массивов или сгладить массивы?Я попытался аннестировать и присоединиться, но в результате я получил бы слишком много возможных кросс-комбинаций.
Спасибо за вашу помощь!