Невозможно получить доступ к разрешению поля для значения с типом ARRAY - PullRequest
0 голосов
/ 07 февраля 2019

Попытка выполнить этот запрос (mytable не реальное имя таблицы):

enter image description here

Получение этой ошибки: Cannot access field permission on a value with type ARRAY<STRUCT<resource STRING, permission STRING, granted BOOL, ...>> at [2:41]

В схеме указано, что это просто строка: enter image description here

При предварительном просмотре таблицы это выглядит так:

enter image description here

1 Ответ

0 голосов
/ 07 февраля 2019

Как видно из схемы ниже - protopayload_auditlog.authorizationInfo - это массив

enter image description here

Итак, для доступа к элементу массива вам необходимосначала UNNEST, как в примере ниже

#standardSQL
SELECT DISTINCT x.permission
FROM `your_table`,
UNNEST(protopayload_auditlog.authorizationInfo) x
LIMIT 10

с результатом как

enter image description here

Примечание: сокращенная версия UNNEST'ing вВышеуказанный запрос

#standardSQL
SELECT DISTINCT x.permission
FROM `your_table` t,
t.protopayload_auditlog.authorizationInfo x
LIMIT 10

Обновление для how do I concat it to a comma separated string?

#standardSQL
SELECT ARRAY_TO_STRING(ARRAY(SELECT permission FROM t.protopayload_auditlog.authorizationInfo), ',') permissions
FROM `your_table` t
LIMIT 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...