Вложенные поля в Google BigQuery - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь разложить несколько вложенных полей и выполнить подзапрос в Google BigQuery.

Это отлично работает.

SELECT id, 
custom_field_options
FROM `project.database.ticket_fields`

'custom_field_options' - это вложенное полеи это вызывает у меня некоторые проблемы.У меня есть «custom_field_options.id» и «custom_field_options.name» и несколько других вложенных полей.

Это также отлично работает.

SELECT ticket_fields.id,
ticket_fields.raw_title,
ticket_custom_fields.name AS ticket_custom_fields_name,
ticket_custom_fields.raw_name AS ticket_custom_fields_raw_name,
ticket_custom_fields.value AS ticket_custom_fields_value,
ticket_fields.created_at
FROM `project.database.ticket_fields` AS ticket_fields
LEFT JOIN UNNEST(custom_field_options) AS ticket_custom_fields
GROUP BY 1,2,3,4,5,6

При отдельном запуске оба этих запроса работают нормально.Теперь я пытаюсь запустить первый запрос как подзапрос второго, чтобы извлечь все идентификаторы из этого запроса, и на основании этого выполнить запрос ниже.

SELECT ticket_fields.id,
ticket_fields.raw_title,
ticket_custom_fields.name AS ticket_custom_fields_name,
ticket_custom_fields.raw_name AS ticket_custom_fields_raw_name,
ticket_custom_fields.value AS ticket_custom_fields_value,
ticket_fields.created_at
FROM `project.database.ticket_fields` AS ticket_fields
LEFT JOIN UNNEST(custom_field_options) AS ticket_custom_fields
  WHERE id IN (SELECT id, 
  custom_field_options
  FROM `project.database.ticket_fields`)
GROUP BY 1,2,3,4,5,6

1 Ответ

0 голосов
/ 17 октября 2018

Вы можете указать имя столбца id, чтобы сделать ссылку однозначной:

SELECT ticket_fields.id,
ticket_fields.raw_title,
ticket_custom_fields.name AS ticket_custom_fields_name,
ticket_custom_fields.raw_name AS ticket_custom_fields_raw_name,
ticket_custom_fields.value AS ticket_custom_fields_value,
ticket_fields.created_at
FROM `project.database.ticket_fields` AS ticket_fields
LEFT JOIN UNNEST(custom_field_options) AS ticket_custom_fields
  WHERE ticket_fields.id IN (SELECT id, 
  custom_field_options
  FROM `project.database.ticket_fields`)
GROUP BY 1,2,3,4,5,6

(я предполагаю, что ticket_fields.id - это id, который вы хотите найти)

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