我在我的URIs
页面维度中请求GA
,如下所示:
我想在Tableau中创建一个计算字段,在第一个“?”之前提取文本。并返回该值。
基于上述输入的理想输出将是:
我试过这个
计算字段:公式:REGEXP_REPLACE(Page, '\\?.+', '')
它不返回任何记录。
请告知解决方案或解释为什么Tableau不按预期处理此问题?
不要将字符替换到问号的右侧,而是尝试将其提取到左侧:
REGEXP_EXTRACT([Page], '([^?]*)')
奇怪的是,如果没有括号,上面计算的字段将不起作用。你最初的尝试也许也是如此。
编辑:因为你的原始功能似乎对我有用,我很好奇你是否正在尝试使用目前不支持Tableau正则表达式的数据源。
Here是支持正则表达式函数的数据源列表:
此功能适用于文本文件,Google BigQuery,PostgreSQL,Tableau数据提取,Microsoft Excel,Salesforce,Vertica,Pivotal Greenplum,Teradata(版本14.1及更高版本),Impala 2.3.0(通过Cloudera Hadoop数据源),Snowflake和Oracle数据源。
在不使用Regex的情况下在Tableau中本地执行此操作的方法如下:
IF CONTAINS([Page],'?') THEN
LEFT([Page], FIND([Page],'?')-1)
ELSE
[Page]
END
但要小心,因为Contains()函数的计算成本相对较高 - 因为它需要搜索每个字符串的每个字符。