У нас есть строковые данные на основе строк и столбцов, разделенных в столбце большой таблицы запроса. Не рекомендуется хранить данные в строковом формате с другим разделителем. Мы можем хранить такие данные как структуру.

Рассмотрим пример переноса данных с сервера sql. Где мы можем сохранять такие данные очень часто, а затем с помощью табличной функции мы можем легко преобразовать эти данные в столбцы. В большом запросе это не так просто.

У нас есть таблица Temptable, в которой есть две колонки. идентификатор и значение в значении. Если вы видите, что данные в столбце Data похожи на json, у нас есть ключ, и его значение основано на разделителе =. Теперь нам нужно перенести эти данные таким образом, чтобы мы могли запускать запрос

ВЫБЕРИТЕ идентификатор, имя, возраст, хобби
ОТ `temptable`
ГДЕ компания =‘ mediaagility ’
И возраст = 30

Мы должны перенести данные в формате ниже.

Для транспонирования данных, прежде всего, мы должны разделить данные значения на основе «;» как только мы разделим столбец значений, мы получим массив, а псевдонимом этого столбца будет ключевое значение.

Синтаксис: - SPLIT (Данные, ’;’)

После этого будет отключен массив и разделены данные на основе «=», и будут созданы 2 столбца (ключ и значение). где весь ключ присутствует в ключевом столбце, и все значения будут представлены в Value.

Synatax: - Split (KeyValue, ’=’) [OFFSET (0)]: - Он возвращает массив из 2 строк в 0-м смещении, все ключи присутствуют, и на 1 смещении будет представлено наше значение.

Мы создаем представление с именем vw_tempdata. Вот ссылка на вышеприведенный запрос. Вы можете пробежать всухую.

Запрос: - https://console.cloud.google.com/bigquery?sq=957358732541:acc8052ce3634c488cd73826207022aa

Вот запрос для переноса данных из строки в столбец, и значение будет повторяться по столбцу.

выберите идентификатор
, MAX (IF (Key = «name», Value, NULL)) в качестве имени
, MAX (IF (Key = «age», Value, NULL)) в качестве возраста
, MAX (IF (Key = «project», Value, NULL)) как проект
, MAX (IF (Key = «company», Value, NULL)) как компания
, MAX (IF (Key = «Предыдущая компания», Значение, NULL)) как предыдущая компания
, MAX (IF (Key = «hobby», Value, NULL)) как хобби
Из `deepakk-bot.deepakdev.vw_tempdata`
группировать по идентификатору, порядку по идентификатору