如何在一个公式中使用多个 REGEXP_REPLACE 用途?
How do I use multiple REGEXP_REPLACE uses in one formula?
我有一个产品 sku 从 Google Analytics 进入 Data Studio,我想将它分成维度段,因为它包含重要信息。
这里有几个 SKU 示例:
S00GX80-SU39-white-red cardinal-40
S00EN20-S903-yellow mustard-38
NOS-S000010-SF43-Navy-FWhit-39
这里的关键信息是颜色和尺寸,接近 SKU 的末尾。
到目前为止,我已经使用此代码创建了一个新维度 ('NEW SKU') 以确保所有 SKU 都以相同的方式开始:
REGEXP_REPLACE(Product SKU,'NOS-','')
然后使用新维度使用以下公式创建两个新维度:
颜色 - REGEXP_EXTRACT(New Product Sku, '^(?:[^-]*[-]){2}([^-]*)')
尺寸 - REGEXP_EXTRACT(New Product Sku, '^(?:[^-]*[-]){3}([^-]*)')
这些在一定程度上起作用,除非 sku 中有额外的破折号 -
。例如,使用我原始示例中的 SKU,只有 38 号黄芥末酱才能正常工作。
我正在寻找的是一个可以去除颜色的公式和一个可以去除尺寸的公式。给出的示例将如下所示:
颜色 |尺码
白红红衣主教 | 40
黄芥末 | 38
海军-FWhit | 39
感谢任何帮助。
由于左右两边的值是已知的,我们可以简单地基于这些进行锚定(也简化了通过将其设为可选来避免删除 NOS 前缀):
/* SKU */
REGEXP_EXTRACT(Product SKU,'(?i)^((?:NOS-)?[A-Z0-9]+-[A-Z0-9]+)')
/* Color */
REGEXP_EXTRACT(Product SKU,'(?i)^(?:(?:NOS-)?[A-Z0-9]+-[A-Z0-9]+)-(.+)-(?:[0-9]+)$')
/* Size */
REGEXP_EXTRACT(Product SKU,'([0-9]+)$')
请注意,$
断言锚定到字符串的末尾,就像 ^
锚定到字符串的开头一样。
我还要补充一点,使用数据源中的探索功能,您可以在 table 网格中列出原始 SKU 和新的计算字段,这样可以轻松识别需要被处理(例如,过滤到任何这些计算字段为空的地方,看看哪里出了问题)。
更新: 这是我在 运行 探索您的示例(文件上传源)时得到的结果
我有一个产品 sku 从 Google Analytics 进入 Data Studio,我想将它分成维度段,因为它包含重要信息。
这里有几个 SKU 示例:
S00GX80-SU39-white-red cardinal-40
S00EN20-S903-yellow mustard-38
NOS-S000010-SF43-Navy-FWhit-39
这里的关键信息是颜色和尺寸,接近 SKU 的末尾。
到目前为止,我已经使用此代码创建了一个新维度 ('NEW SKU') 以确保所有 SKU 都以相同的方式开始:
REGEXP_REPLACE(Product SKU,'NOS-','')
然后使用新维度使用以下公式创建两个新维度:
颜色 - REGEXP_EXTRACT(New Product Sku, '^(?:[^-]*[-]){2}([^-]*)')
尺寸 - REGEXP_EXTRACT(New Product Sku, '^(?:[^-]*[-]){3}([^-]*)')
这些在一定程度上起作用,除非 sku 中有额外的破折号 -
。例如,使用我原始示例中的 SKU,只有 38 号黄芥末酱才能正常工作。
我正在寻找的是一个可以去除颜色的公式和一个可以去除尺寸的公式。给出的示例将如下所示:
颜色 |尺码
白红红衣主教 | 40
黄芥末 | 38
海军-FWhit | 39
感谢任何帮助。
由于左右两边的值是已知的,我们可以简单地基于这些进行锚定(也简化了通过将其设为可选来避免删除 NOS 前缀):
/* SKU */
REGEXP_EXTRACT(Product SKU,'(?i)^((?:NOS-)?[A-Z0-9]+-[A-Z0-9]+)')
/* Color */
REGEXP_EXTRACT(Product SKU,'(?i)^(?:(?:NOS-)?[A-Z0-9]+-[A-Z0-9]+)-(.+)-(?:[0-9]+)$')
/* Size */
REGEXP_EXTRACT(Product SKU,'([0-9]+)$')
请注意,$
断言锚定到字符串的末尾,就像 ^
锚定到字符串的开头一样。
我还要补充一点,使用数据源中的探索功能,您可以在 table 网格中列出原始 SKU 和新的计算字段,这样可以轻松识别需要被处理(例如,过滤到任何这些计算字段为空的地方,看看哪里出了问题)。
更新: 这是我在 运行 探索您的示例(文件上传源)时得到的结果