Напишите код SQL в BigQuery, чтобы получить данные в формате attribute1: attribute_value1; attribute2: attribute_value2

Я работаю над первичными данными. Каждая строка в файле данных для собственных данных должна содержать все данные для данного пользователя и должна быть разделена символом CARET (^). Файл должен иметь кодировку UTF-8 (или us-ascii). Каждая строка в файле данных должна содержать 2 столбца:

  1. Первый столбец представляет собой собственный идентификатор пользователя и должен соответствовать идентификатору основного пользователя клиента, который используется в процессе сопоставления пользователей, описанном в разделе 2.
  2. Второй столбец содержит все данные, связанные с пользователем, и должен быть в следующем формате: attribute1: attribute_value1; attribute2: attribute_value2.

Например, если в базе данных регистрации клиента есть 3 столбца с названиями Возрастная группа, Пол и Интерес, которые необходимо импортировать в Audience Studio, то следующий файл представляет собой действительный файл данных, который может быть получен Audience Studio:

User1234 ^ пол: мужской; возраст: 18-24; интересы: рыбалка User2345 ^ пол: женский

Я загрузил файл csv в таблицу в bigQuery, но я не могу выполнить форматирование столбца с помощью SQL. Может кто-нибудь помочь?


person Radhika    schedule 23.06.2021    source источник


Ответы (1)


Первый шаг - разделить столбцы на столбцы user_id и attributes, что можно просто сделать с помощью функции split. Тогда у вас есть несколько вариантов, возможно, вот самый простой:

SELECT
    user_id,
    REGEXP_EXTRACT(attributes, "gender:(.*?)(?:;|$)") AS gender,
    REGEXP_EXTRACT(attributes, "age:(.*?)(?:;|$)") AS age,
    REGEXP_EXTRACT(attributes, "interest:(.*?)(?:;|$)") AS interest,
FROM (
    SELECT
        SPLIT(rawline, "^")[OFFSET(0)] AS user_id,
        SPLIT(rawline, "^")[OFFSET(1)] AS attributes,
    FROM 
        `yourdataset.yourtable`
)

Вы также можете почерпнуть вдохновение из ответа @Mikhail_Berlyant.

person Cylldby    schedule 24.06.2021