Заменить вложенные / повторные поля - PullRequest
0 голосов
/ 01 июня 2018

Я хотел бы заменить повторяющиеся поля (hit.customdimensions.value), в то время как остальные данные должны остаться без изменений.Допустим, я хочу хэшировать hit.customdimension.value с MD5, где hit.customdimension.index между 1 и 5, и заменять исходные значения хеш-значениями

В случае customdimensions.value, похоже, это работает так:

select x.* except (customdimensions), cd.index as cdindex, MD5(cd.value) as 
cdvalue
from `datasetx.tabley` x, unnest(customdimensions) as cd
where cd.index between 1 and 5

К сожалению, если я хочу сделать что-то похожее с hit.customdimensions.value, я должен использовать кроме (hit) перед unnest (hit.customdimensions), что приводит к исчезновению других столбцов.

select x.* except (hits), hitcd.index as hitcdindex, MD5(hitcd.value) as 
hitcdvalue 
from `datasetx.tabley` x, unnest(hits) as hit, unnest(hit.customdimensions) 
as hitcd
where hitcd.index between 1 and 5

Есть ли какое-нибудь простое решение для этого?

1 Ответ

0 голосов
/ 02 июня 2018

Ниже полностью сохраняет всю структуру таблицы / данные и просто хэши hits.customdimension.value для hits.customdimension.index от 1 до 5

#standardSQL
SELECT * 
  REPLACE( ARRAY(
    SELECT AS STRUCT * 
      REPLACE( ARRAY(
        SELECT AS STRUCT 
          index, 
          IF(index BETWEEN 1 AND 5, TO_BASE64(MD5(value)), value) value 
        FROM UNNEST(customdimensions)      
      ) AS customdimensions
    )
    FROM UNNEST(hits)
  ) AS hits
)
FROM `datasetx.tabley`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...