【问题标题】:Write SQL code in BigQuery to get the data in format attribute1:attribute_value1;attribute2:attribute_value2在 BigQuery 中编写 SQL 代码以获取格式为 attribute1:attribute_value1;attribute2:attribute_value2 的数据
【发布时间】:2021-06-24 09:07:34
【问题描述】:

我正在处理第一方数据。第一方数据的数据文件中的每一行都必须包含给定用户的所有数据,并且应该使用 CARET (^) 字符分隔。 该文件需要是 UTF-8 编码(或 us-ascii) 数据文件中的每一行应包含 2 列:

  1. 第一列代表第一方用户 ID,必须与第 2 节中描述的用户匹配过程中使用的客户端第一方用户 ID 匹配
  2. 第二列包含与用户相关的所有数据,格式如下: 属性1:属性值1;属性2:属性值2

例如,如果客户的注册数据库中有 3 列分别称为 Age Group、Gender 和 Interest 需要导入 Audience Studio,则以下表示 Audience Studio 可以摄取的有效数据文件:

User1234^性别:男;年龄:18-24;兴趣:钓鱼 User2345^gender:female

我已在 bigQuery 的表中上传了 csv 文件,但我无法使用 SQL 执行列格式化。有人可以帮忙吗?

【问题讨论】:

    标签: google-bigquery data-analysis dataformat


    【解决方案1】:

    第一步是将您的列拆分为user_idattributes 列,这可以通过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 的that answer 中汲取灵感。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-29
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多