Таблица соединения BigQuery после оператора case в подзапросе

Я пытаюсь написать запрос, который можно запускать еженедельно или ежемесячно, с некоторыми числовыми изменениями, которые можно сделать в таблицах Google. Однако, чтобы это сработало, мне нужно изменить названия некоторых продуктов, чтобы они были более единообразными и соответствовали данным из таблиц Google. В этом случае что-то вроде старшего или младшего перед названием продукта должно стать одним конкретным именем, например, «инженер» вместо старшего инженера, инженера, младшего инженера и т.д. пункт, следующий за ним.

Краткий сводный код того, как я пытаюсь это сделать, таков (группа по и т. д. Не указана):

SELECT 
      t.fullVisitorId,
      t.product,
      t.transaction,
      t.transactiondate,
      cc.productvalue   
FROM t LEFT JOIN
`othertable` AS cc ON t.product = cc.product    
FROM(
SELECT
CASE 
WHEN product = '%engineer%' THEN 'Engineer'
END AS product,
fullVisitorId,
transaction,
value,
transactiondate
    FROM ( SELECT
     fullVisitorId,
              hit.transaction.transactionId AS transaction,
              prod.v2ProductName AS product,
           FORMAT_TIMESTAMP("%Y-%m-%d", TIMESTAMP_SECONDS(SAFE_CAST(visitStartTime AS INT64)), "Europe/London") AS transactiondate
            FROM
          `tableID.ga_sessions_*` AS t
        CROSS JOIN
          UNNEST(hits) AS hit            
        WHERE
          _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', '2018-11-01') 
          AND FORMAT_DATE("%E4Y%m%d", '2018-11-30')
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
1 180
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ниже приведен стандартный SQL BigQuery.

SELECT 
  t.fullVisitorId,
  t.product,
  t.transaction,
  t.transactiondate,
  cc.productvalue   
FROM (
  SELECT CASE WHEN product LIKE '%engineer%' THEN 'Engineer' END AS product,
    fullVisitorId,
    transaction,
    value,
    transactiondate
  FROM ( 
    SELECT
      fullVisitorId,
      hit.transaction.transactionId AS transaction,
      prod.v2ProductName AS product,
      FORMAT_TIMESTAMP("%Y-%m-%d", TIMESTAMP_SECONDS(SAFE_CAST(visitStartTime AS INT64)), "Europe/London") AS transactiondate
    FROM `tableID.ga_sessions_*` AS t
    CROSS JOIN UNNEST(hits) AS hit            
    WHERE _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', '2018-11-01') 
    AND FORMAT_DATE("%E4Y%m%d", '2018-11-30')
  )
) AS t
LEFT JOIN `othertable` AS cc 
ON t.product = cc.product    

Также обратите внимание на product LIKE '%engineer%' вместо product = '%engineer%'.

если у вас есть новый вопрос - отправьте его как новый вопрос с конкретными деталями, и мы будем рады ответить. А пока подумайте о том, чтобы принять ответ, если он вам поможет.

Mikhail Berlyant 19.12.2018 15:06

Другие вопросы по теме