Вычислить вложенное поле без потери схемы экспорта в BigQuery - PullRequest
0 голосов
/ 11 июня 2019

Расчет по полю приводит к потере исходной схемы экспорта в BigQuery.

У меня есть стандартная улучшенная схема электронной коммерции, и я хочу изменить транзакцию на другую валюту.Я хочу сохранить общую структуру схемы экспорта.Вычисляемое поле TransactionNewCurrency должно быть в hit.transaction.transactionRevenueNewCurrency.

#standardSQL
SELECT
s.*,
ARRAY(SELECT  COALESCE( x.transaction.transactionRevenue*1.17,0)
        FROM UNNEST(hits) AS x) AS transactionRevenueNewCurrency
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` as s , UNNEST(hits) as h
WHERE
_TABLE_SUFFIX BETWEEN '20160801' AND '20160831'
AND transaction.transactionRevenue >0
LIMIT 10000

Новое поле присоединяется к сеансу вместо каждого попадания.

1 Ответ

2 голосов
/ 11 июня 2019

Ниже для BigQuery Standard SQL

#standardSQL
SELECT * REPLACE(
  ARRAY(
    SELECT AS STRUCT * REPLACE(
      (SELECT AS STRUCT * REPLACE(
        COALESCE(CAST(transactionRevenue * 1.17 AS INT64), 0
        ) AS transactionRevenue)
       FROM UNNEST([transaction])
      ) AS transaction)
    FROM UNNEST(hits) hit
  ) AS hits)
FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` 
WHERE _TABLE_SUFFIX BETWEEN '20160801' AND '20160831'
...