Выберите Выбрать поле, используя SQL (BigQuery) - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть таблица с именем Table1. У меня есть следующие поля:

Field Name               Type     Mode
name                     STRING   NULLABLE
items                    RECORD   REPEATED
items.properties         RECORD   REPEATED  
items.properties.name    STRING   NULLABLE  
items.properties.value   STRING   NULLABLE  

Вот пример того, как выглядит таблица:

name        items.properties.name        items.properties.value
---------------------------------------------------------------
ABC1        type                         1
            frequent                     1
---------------------------------------------------------------
ABC2        type                         2
            frequent                     1
---------------------------------------------------------------
ABC3        type                         2
            frequent                     2
---------------------------------------------------------------
ABC4        type                         1
            frequent                     2

В конечном счете, я хочу выбрать имена и значения этих элементов, но я Я постоянно получаю ошибки. Вот что я пытаюсь для начала:

SELECT ARRAY(SELECT properties FROM UNNEST(items)) AS itemProp
FROM `Table1`

Я исчерпал все свои другие идеи. Но по сути, я просто хочу вытащить все значения и имена свойств в отдельных строках, чтобы я мог сказать where items.properties.name = type AND items.properties.value = 1.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Ниже для BigQuery Standard SQL

#standardSQL
SELECT t.* 
FROM `project.dataset.table1` t,
UNNEST(items) item, UNNEST(properties) property
WHERE property.name = 'type' 
AND property.value = 1
1 голос
/ 26 февраля 2020

Примерно так:

select prop.*
from t cross join
     (unnest(t.items)) item cross join
     (unnest(item.properties)) prop;

У вас странная структура данных. Необходим только один повторный столбец. Не вижу смысла повторять свойства внутри предметов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...