我正在尝试创建一个显示年龄范围的新字段,该字段来自存储在Targeting字段中的类似json的字符串。但是,不能保证该行中存在这些数据。
样本数据(age_min/age_max并不总是存在于一起,两者都可以单独存在)
{"age_min":25,"age_max":45,"other_nonrelated":1234}这是我如何提取年龄_min/年龄_max的方法
REGEXP_EXTRACT(Targeting, '.*\"age_min\":(\\d*).*')在尝试使用CASE函数之后,我似乎无法使用REGEXP_EXTRACT。因此,我为age_min和age_max创建了新的字段,名为Targeting Age Min和Targeting Age Max。
现在,我只需要确保Targeting Age Min和Targeting Age Max都不返回null,但我也不能只使用IS NOT NULL,所以我使用REGEXP_MATCH(Targeting Age Max, '\\d*')。但是,当我不能使用THEN使用CONCAT()时,我就到达了行的末尾。
当前进度(假设错误,因为它不支持CONCAT()之后的THEN)
CASE
WHEN REGEXP_MATCH(Targeting Age Max, '\\d*') AND REGEXP_MATCH(Targeting Age Min, '\\d*') THEN CONCAT(Targeting Age Min, ' – ', Targeting Age Max)
END期望结果
25 – 45如果有一个更优雅的解决方案,而不需要创建多个不同的字段,比如Targeting Age Min和Targeting Age Max,那就太酷了。
发布于 2020-02-24 18:12:55
编辑:以age_min - age_max格式显示年龄范围的CONCAT公式
CONCAT(REGEXP_EXTRACT(Targeting, '"age_min":(\\d+)'), " - ", REGEXP_EXTRACT(Targeting, '"age_max":(\\d+)'))使用公式更新的报告图像:

原始职位(计算):age_max - age_min
这个单独计算的字段使用REGEXP_EXTRACT和CAST函数捕获age_max和age_min中的值,确保它们都是数字值,然后执行减法:
CAST(REGEXP_EXTRACT(Targeting, '"age_max":(\\d+)') AS NUMBER ) - CAST(REGEXP_EXTRACT(Targeting, '"age_min":(\\d+)') AS NUMBER )报告和GIF详细说明:

https://stackoverflow.com/questions/58846302
复制相似问题