美文网首页
BigQuery中拆解字符串并平展为多行

BigQuery中拆解字符串并平展为多行

作者: Houtasu | 来源:发表于2021-02-25 17:25 被阅读0次

我在介绍bigquery的半结构化数据中介绍过我们总表的结构,
但是有些命令的参数个数是不固定的,比如玩家在一次战斗中击杀的敌人种类,
有可能有一种,也有可能有两种三种...
这种在表中是直接用#号拼接在一起的,如下所示:


当需要统计海盗的数量时,这种拼接的就没法统计。
所以需要先把这个拼接的字符串变成两行数据,
这里要用到bigquery的平展数组。可以参考这篇文档
WITH sequences AS
  (SELECT 1 AS id, [0, 1, 1, 2, 3, 5] AS some_numbers
   UNION ALL SELECT 2 AS id, [2, 4, 8, 16, 32] AS some_numbers
   UNION ALL SELECT 3 AS id, [5, 10] AS some_numbers)
SELECT id, flattened_numbers
FROM sequences, sequences.some_numbers AS flattened_numbers;

+------+-------------------+
| id   | flattened_numbers |
+------+-------------------+
|    1 |                 0 |
|    1 |                 1 |
|    1 |                 1 |
|    1 |                 2 |
|    1 |                 3 |
|    1 |                 5 |
|    2 |                 2 |
|    2 |                 4 |
|    2 |                 8 |
|    2 |                16 |
|    2 |                32 |
|    3 |                 5 |
|    3 |                10 |
+------+-------------------+

上面这个例子中,本来是3行数据,some_numbers是一个数组,
然后直接把some_number接到from的后面,就可以把这个数组展开,并且和前面的id是绑定的。
参照这个例子,我们只需要使用split()函数把#号拆成数组,在接到from后面就可以变成两行了。

WITH
  t1 AS (
  SELECT
    uid,
    SPLIT(p.str,'#') AS pirates
  FROM
    `命令表`,
    UNNEST(params) AS p
  WHERE
    cmd='PVE Win'
    AND p.vn = 'v1')
SELECT
  uid,
  pirates
FROM
  t1,
  t1.pirates AS pirates

相关文章

  • BigQuery中拆解字符串并平展为多行

    我在介绍bigquery的半结构化数据中介绍过我们总表的结构,但是有些命令的参数个数是不固定的,比如玩家在一次战斗...

  • TypeScript学习

    字符串的新特性 多行字符串 使用``实现多行字符串 编译成js代码为: 字符串模板 其实和多行字符串差不多 编译j...

  • TypeScript字符串新特性

    多行字符串 1. 多行字符串 其中 `` 用来定义 ES6 中的模板字符串,${expr} 用来在模板字符串中嵌...

  • JavaScript基础

    1.多行字符串表示方法 这是一个 多行字符串 测试 该方法为ES6新增。示例: 输出为: 2.用[]获取字符串的位...

  • Hive中UDTF的实现方式调研

    简单UDTF的实现 实现基于切割字符串并生成多行数据。

  • python入门 之小笔记

    1.字符串中包含多个转义字符的时候 多行字符串前面添加r,把这个多行字符串也变成一个raw字符串 r'''Pyth...

  • scala之stripMargin's demo

    在Scala代码块中利用“定界符”创建多行字符串 解决方法: 在Scala中,利用三个双引号包围多行字符串配合...

  • Javascript知识点整合

    字符串 单行字符串: ‘字符串’或“字符串” 多行字符串: `多行字符串` 字符串操作: 字符串连接‘+’号 长度...

  • 3、Swift字符串和字符

    字符串字面量 字符串字面量可以用于为常量和变量提供初始值: 多行字符串字面量 如果你需要一个字符串是跨越多行的,那...

  • ES6-字符串模板与字符串新增的方法

    ES6模板字面量(template literal) 多行字符串 ES5情况下多行字符串 多行的字符串以 逗号 '...

网友评论

      本文标题:BigQuery中拆解字符串并平展为多行

      本文链接:https://www.haomeiwen.com/subject/xrvsfltx.html