Google Cloud Dataprep值插入及三位ZIP码补全问题求助
Google Cloud Dataprep 问题解答
1. 如何在Google Cloud Dataprep中插入值?
插入值的方式取决于你的具体场景,这里给你几种实用的实现方法:
给现有列的指定位置插入内容
如果是要在列内容的开头、结尾或者中间固定位置插入值,用CONCAT或INSERT函数就能搞定:- 开头/结尾插入:比如要在
zip_code列前加'US-',直接写CONCAT('US-', zip_code),然后把结果保存为新列或者覆盖原列;结尾加内容的话就是CONCAT(zip_code, '-CA')。 - 中间特定位置插入:比如要在第3个字符后插入横杠,用
INSERT(zip_code, 3, 0, '-'),这里的0表示不删除原有字符,只插入新内容。
- 开头/结尾插入:比如要在
新增列并插入固定/条件值
直接添加新列,然后用赋值操作:- 插入固定值:比如新列默认填充
'pending',直接在公式框里写'pending'就行。 - 插入条件值:用
CASE WHEN语句,比如根据order_status列的值插入不同标记:CASE WHEN order_status = 'completed' THEN '1' ELSE '0' END。
- 插入固定值:比如新列默认填充
插入新数据行
Dataprep没有直接插入空行的按钮,一般可以通过两种方式实现:要么导入包含要插入行的数据集,然后用合并操作拼接;要么用窗口函数生成行号,再交叉连接一个包含空值的小数据集来生成新行。
2. 解决ZIP码格式错误的补位问题
你遇到的问题是因为Dataprep界面上的可视化替换对话框默认是按纯文本匹配,不支持正则表达式,所以得用自定义公式里的REGEXP_REPLACE函数来实现正则替换,具体步骤如下:
假设你的目标是:找到列中包含3位数字的片段,在其前面加上'12'(比如把123变成12123,或者把ABC123XYZ变成ABC12123XYZ),可以这样操作:
- 在Dataprep的操作栏里,选择添加转换 > 自定义公式。
- 针对你的ZIP码列(比如叫
zip_code),输入对应的REGEXP_REPLACE公式:- 如果整列都是3位数字的情况(比如
123要变成12123):
这里REGEXP_REPLACE(zip_code, '^(\d{3})$', '12$1')^(\d{3})$匹配整列的3位数字,$1表示引用匹配到的3位数字,替换后就是12加上原来的3位数字。 - 如果列内容中包含3位数字的片段,要在该片段前加
12:REGEXP_REPLACE(zip_code, '(\d{3})', '12$1') - 如果你的
{start}{digit}{3}{end}是指“任意开头内容+3位数字+任意结尾内容”,要在3位数字前插入12并保留前后内容:REGEXP_REPLACE(zip_code, '^(.*?)(\d{3})(.*)$', '$112$2$3')
- 如果整列都是3位数字的情况(比如
- 点击应用,就能得到你想要的补位结果了。
简单来说,可视化替换适合简单文本替换,正则相关的复杂替换一定要用REGEXP_REPLACE这类函数来实现,别在替换对话框里浪费时间啦~
内容的提问来源于stack exchange,提问作者user40551
相关产品推荐
相关产品推荐

