雪花中无效的正则表达式错误
Invalid regular expression error in snowflake
我正在尝试从文件名中提取日期 (20200222),同时在 snowflake 中执行 copyinto 命令。
文件名
s3://hadoop/2020002/dbo.DOSSIER_TRANSPORT_20200222.csv.gz
雪花查询
SELECT regexp_substr(metadata$filename, '/(_((\-|\+)?[0-9]+(\.[0-9]+)?).)/' as data FROM '@PRD.OPE_STG
_CMD.SPX_PRD_CMD/' (file_format => 'OTS_TEST.OPA_STG_BENE.OTD_FORMAT', pattern => '.*dbo.DOSSIER_TRANSPORT.*') ;
我试过这个 regex 但它不支持雪花。低于错误
100048 (2201B): Invalid regular expression: '/(_((-|+)?[0-9]+(.[0-9]+)?).)/', no argument for repetition operator: +
使用
REGEXP_SUBSTR(metadata$filename, '_([0-9]+)[.]', 1, 1, 'c', 1)
该模式匹配 _
,然后捕获第 1 组中的一个或多个数字,然后匹配 .
。由于 group_num
参数是 1
,因此 return 值是第 1 组值。
您需要对 Snowflake 使用双重转义。如果你只是 select 你的正则表达式字符串你会得到:
SELECT '/(_((\-|\+)?[0-9]+(\.[0-9]+)?).)/';
=> /(_((-|+)?[0-9]+(.[0-9]+)?).)/
这也正是 regexp 函数将作为输入参数获得的内容。
使用双重转义你会得到:
SELECT '/(_((\-|\+)?[0-9]+(\.[0-9]+)?).)/';
=> /(_((\-|\+)?[0-9]+(\.[0-9]+)?).)/
这就是我相信你想要的。
您得到的错误来自正则表达式 (-|+)
; +
运算符需要一个实参...
我正在尝试从文件名中提取日期 (20200222),同时在 snowflake 中执行 copyinto 命令。
文件名
s3://hadoop/2020002/dbo.DOSSIER_TRANSPORT_20200222.csv.gz
雪花查询
SELECT regexp_substr(metadata$filename, '/(_((\-|\+)?[0-9]+(\.[0-9]+)?).)/' as data FROM '@PRD.OPE_STG
_CMD.SPX_PRD_CMD/' (file_format => 'OTS_TEST.OPA_STG_BENE.OTD_FORMAT', pattern => '.*dbo.DOSSIER_TRANSPORT.*') ;
我试过这个 regex 但它不支持雪花。低于错误
100048 (2201B): Invalid regular expression: '/(_((-|+)?[0-9]+(.[0-9]+)?).)/', no argument for repetition operator: +
使用
REGEXP_SUBSTR(metadata$filename, '_([0-9]+)[.]', 1, 1, 'c', 1)
该模式匹配 _
,然后捕获第 1 组中的一个或多个数字,然后匹配 .
。由于 group_num
参数是 1
,因此 return 值是第 1 组值。
您需要对 Snowflake 使用双重转义。如果你只是 select 你的正则表达式字符串你会得到:
SELECT '/(_((\-|\+)?[0-9]+(\.[0-9]+)?).)/';
=> /(_((-|+)?[0-9]+(.[0-9]+)?).)/
这也正是 regexp 函数将作为输入参数获得的内容。
使用双重转义你会得到:
SELECT '/(_((\-|\+)?[0-9]+(\.[0-9]+)?).)/';
=> /(_((\-|\+)?[0-9]+(\.[0-9]+)?).)/
这就是我相信你想要的。
您得到的错误来自正则表达式 (-|+)
; +
运算符需要一个实参...