BigQuery SQL Query Optimization

HTTP версия 1.1 добавила специальный HTTP-метод, CONNECT - предназначенный для создания SSL-туннеля, включая необходимое согласование протокола и криптографическую настройку. После этого обычные запросы отправляются в туннель SSL, заголовки и составные части.

0
задан fdc 21 February 2019 в 03:57
поделиться

1 ответ

Мне удалось получить запрос, который работает, но мне любопытно, есть ли более лаконичный способ его построения (все еще учимся!).

Основываясь на представленной вами схеме и предполагая, что ваш запрос действительно возвращает то, что вы ожидаете - ниже «оптимизированной» версии должен возвращаться тот же результат

#standardSQL
WITH companies AS (
  SELECT
      o.companyid AS companyid,
      STRUCT(o.properties.name.value, o.properties.name.timestamp) AS name,
      STRUCT(o.properties.industry.value, o.properties.industry.timestamp) AS industry,
      STRUCT(o.properties.lifecyclestage.value, o.properties.lifecyclestage.timestamp) AS lifecyclestage
  FROM (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY o.companyid ORDER BY o._sdc_batched_at DESC) AS seqnum
    FROM `project.hubspot.companies` o
  ) o
  WHERE seqnum = 1
)
SELECT
  companyid,
  name.value AS name,
  industry.value AS industry,
  lifecyclestage.value AS lifecyclestage
FROM companies   

Как видите, я просто удалил [111 ] потому что у вас уже есть только одна запись / строка для каждой компании после подачи заявки WHERE seqnum = 1, поэтому нет никакой причины группировать только одну строку для каждой компании. По той же самой причине я удалил ARRAY_AGG( ORDER BY)[SAFE_OFFSET(0)] - она ​​просто агрегировала одну структуру, а затем извлекла этот один элемент из массива - поэтому нет необходимости делать это

0
ответ дан Mikhail Berlyant 21 February 2019 в 03:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: