我正在尝试从数组创建虚拟列。
我的原始数据集如下所示
|---------------------|------------------|
| UserID | Categories |
|---------------------|------------------|
| 1 | 1 44 56 423 |
|---------------------|------------------|
| 2 | 44 54 624 |
|---------------------|------------------|
我想要实现的是一个表,它使所有类别(例如,创建一个新的 Categories_1、Categories_44、Categories_56 等列),其中数组长度不固定。
输出应如下所示 - 包含所有可能的列,具体取决于类别列中的内容
|-----------|-----------------|-----------------|-----------------|
| UserID | Categories_1 | Categories_44 | Categories_54 |
|-----------|-----------------|-----------------|-----------------|
| 1 | 1 | 1 | 0 |
|-----------|-----------------|-----------------|-----------------|
| 2 | 0 | 1 | 1 |
|-----------|-----------------|-----------------|-----------------|
从初始表中 - 我已经设法使用 SPLIT 函数将类别拆分
SELECT SPLIT(Categories, " ") FROM `dataset.table`
它给了我一个数组,我不太确定如何从这里开始。
使用 CASE WHEN 对其进行硬编码几乎是不可能的,因为用户数量多达数万,类别多达数百