Google bigquery 使用多个分隔符拆分BigQuery

Google bigquery 使用多个分隔符拆分BigQuery,google-bigquery,Google Bigquery,我想做一个左分割URI当一个角色像?或出现 SELECT CASE WHEN URI LIKE '%?%' THEN FIRST(SPLIT(URI, "?")) WHEN URI LIKE '%#%' THEN FIRST(SPLIT(URI, "#")) END WITHIN RECORD AS URI_FILTER FROM (SELECT "/A/A1/AA2/205.html#jfsalf" AS URI) 输出必须是:/A/A1/AA2/205.html 要测试的另一个URI:

我想做一个左分割URI当一个角色像?或出现

SELECT 
CASE
WHEN URI LIKE '%?%' THEN FIRST(SPLIT(URI, "?"))
WHEN URI LIKE '%#%' THEN FIRST(SPLIT(URI, "#"))
END WITHIN RECORD AS URI_FILTER
FROM (SELECT "/A/A1/AA2/205.html#jfsalf" AS URI)
输出必须是:/A/A1/AA2/205.html

要测试的另一个URI:

/A/A1/AA2/205.html?pRef=209888
错误:在没有聚合函数的情况下应用了作用域

我认为更适合于此

选择 URI,REGEXP_EXTRACTURI,r'.*?[?]' 从…起 选择/A/A1/AA2/205.htmljfsalf作为URI, 选择/A/A1/AA2/205.html?pRef=209888作为URI 我认为这更合适

选择 URI,REGEXP_EXTRACTURI,r'.*?[?]' 从…起 选择/A/A1/AA2/205.htmljfsalf作为URI, 选择/A/A1/AA2/205.html?pRef=209888作为URI 使用REGEXP\u EXTRACT。如果URI可能没有or?,则可以使用正则表达式来解释这种情况:

#standardSQL
WITH T AS (
  SELECT '/A/A1/AA2/205.html#jfsalf' AS path UNION ALL
  SELECT '/A/A1/AA2/205.html?pRef=209888' AS path UNION ALL
  SELECT '/A/A1/AA2/205.html' AS path
)
SELECT
  REGEXP_EXTRACT(path, r'([^#?]+)') AS left_path
FROM T;
使用REGEXP\u EXTRACT。如果URI可能没有or?,则可以使用正则表达式来解释这种情况:

#standardSQL
WITH T AS (
  SELECT '/A/A1/AA2/205.html#jfsalf' AS path UNION ALL
  SELECT '/A/A1/AA2/205.html?pRef=209888' AS path UNION ALL
  SELECT '/A/A1/AA2/205.html' AS path
)
SELECT
  REGEXP_EXTRACT(path, r'([^#?]+)') AS left_path
FROM T;

SPLIT函数以数组格式的嵌套单元格返回数据,这在某些方面非常有用

如果需要此格式,另一种方法是使用替换操作将各种键、%等转换为可在拆分中使用的单个键

在下面的代码中,我们转换为?然后就分手了


拆分替换URI

SPLIT函数以数组格式的嵌套单元返回数据,这在某些方面非常有用

如果需要此格式,另一种方法是使用替换操作将各种键、%等转换为可在拆分中使用的单个键

在下面的代码中,我们转换为?然后就分手了

拆分替换URI