Преобразование устаревшего SQL-запроса в стандартный SQL - PullRequest
1 голос
/ 24 апреля 2019

Я хочу преобразовать приведенный ниже устаревший SQL-запрос в стандартный SQL. У меня проблема в том, что мне нужно раскрутить две таблицы (метки и кредиты). Как я могу преобразовать этот запрос? Спасибо!

Я сталкиваюсь с «Скалярным подзапросом, созданным более чем одним элементом» всякий раз, когда пытаюсь переписать этот запрос (см. Ниже).

Устаревший SQL-запрос Я пытаюсь переписать:

SELECT
  service.description,
  sku.description,
  usage_start_time,
  usage_end_time,
  labels.key,
  labels.value,
  cost,
  usage.amount,
  project.name,
  credits.name,
  credits.amount
FROM
  flatten([gcp_billing_data.gcp_billing_export],
    credits)

То, что я до сих пор пробовал в стандартном SQL:

SELECT
  service.description AS service,
  sku.description AS sku,
  usage_start_time,
  usage_end_time,
  l.key,
  l.value,
  cost,
  usage.amount AS usage,
  project.name AS project,
  c.name AS credit,
  c.amount
FROM
  `gcp_billing_data.gcp_billing_export`,
  UNNEST(labels) AS l,
  UNNEST(credits) AS c
Group by 1,2,3,4,5,7,8,9,10,11

Этот запрос выполняется, но количество строк значительно меньше, чем я ожидал.

1 Ответ

1 голос
/ 24 апреля 2019

быстрое и формальное исправление вашего запроса в стандартном SQL - это что-то вроде замены ниже

(select l.value from unnest(labels) as l)    

с

(select string_agg(l.value) from unnest(labels) as l)   

Но это все равно не то же самое, что делает начальная версия вашей версии запроса Legacy SQL

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