Не може да има достъп до разрешение за поле за стойност с тип ARRAY‹STRUCT‹ресурс STRING, разрешение STRING, предоставено BOOL

Опитвам се да изпълня тази заявка (mytable не е истинското име на таблицата):

въведете описание на изображението тук

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

В схемата пише, че е просто низ: въведете описание на изображението тук

Когато визуализирам таблицата, тя изглежда така:

въведете описание на изображението тук


person red888    schedule 07.02.2019    source източник


Отговори (1)


Както можете да видите от схемата по-долу - protopayload_auditlog.authorizationInfo е масив

въведете описание на изображението тук

Така че, за да имате достъп до елемент от масива, първо трябва да го ИЗКЛЮЧИТЕ, както е в примера по-долу

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

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

въведете описание на изображението тук

Забележка: версията за бърз достъп на UNNEST в горната заявка е

#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
person Mikhail Berlyant    schedule 07.02.2019
comment
как да го свържа към низ, разделен със запетая? Искам да получа това като едно поле и да върна други полета (като името на кофата) - person red888; 07.02.2019
comment
това всъщност е новият въпрос ;o) ако имате още - моля, публикувайте нов въпрос и аз (или някой друг в SO) ще се радвам да отговоря. Междувременно - вижте актуализацията в отговора ми и помислете дали да гласувате и да приемете ;o) - person Mikhail Berlyant; 07.02.2019
comment
добре, също къде мога да видя правилната схема като вашата екранна снимка? Вижда ли се само в стария потребителски интерфейс? Защо новият потребителски интерфейс не показва това? - person red888; 07.02.2019
comment
Добър въпрос! начинът, по който схемата е представена в моя отговор, не е налична в уеб интерфейса на Google - нито класически, нито нов. Използвам Goliath за BigQuery - така че екранната снимка е от там. Можете да го изпробвате безплатно – проверете го в Google Cloud Marketplace – Potens. io - Също така можете да прочетете за функциите на инструментите тук. Разкриване – вижте значката ми – аз съм автор и архитект на Potens.io – набор от уеб базирани инструменти за продуктивност като Magus и Goliath. Както и разширение за chrome BigQuery Mate. - person Mikhail Berlyant; 07.02.2019
comment
Бих могъл да задам друг въпрос за това, но как да получите разрешение за това? Опитвам същия array_to_string и не работи. Дали защото granted е булево? - person red888; 07.02.2019
comment
наистина трябва да зададете нов въпрос, като обясните конкретния си случай с всички примери и логика, които трябва да постигнете - коментарите не са добри за въпроси и отговори. Моля, публикувайте нов въпрос - и със сигурност ще получите отговор! Очевидно се опитайте да зададете въпроса си така, че да не се налага да питате отново за всяко малко допълнение :o) - person Mikhail Berlyant; 07.02.2019