Azure sql database Azure SQL DW中的regexp_替换

Azure sql database Azure SQL DW中的regexp_替换,azure-sql-database,azure-sqldw,Azure Sql Database,Azure Sqldw,Azure SQL DW中的REGEXP_REPLACE是否有与Oracle/或任何其他关系数据库中相同的内置替换函数 我需要从URL中删除GUID值和任何字母数字值。下面给出的例子。在azure SQLDW中有什么方法可以轻松实现它吗?如果不在SQL DW中,那么至少在Azure SQL DB中 输入 /我的账户/营业场所/001A4BF58F8C1EE1ACE8ED6A65698305/账户/概述 /我的账户/001A4BF5891C1ED1A5F27409BC0A1D02/账户/85100

Azure SQL DW中的REGEXP_REPLACE是否有与Oracle/或任何其他关系数据库中相同的内置替换函数

我需要从URL中删除GUID值和任何字母数字值。下面给出的例子。在azure SQLDW中有什么方法可以轻松实现它吗?如果不在SQL DW中,那么至少在Azure SQL DB中

输入 /我的账户/营业场所/001A4BF58F8C1EE1ACE8ED6A65698305/账户/概述

/我的账户/001A4BF5891C1ED1A5F27409BC0A1D02/账户/851008500240-1602-1512164572/关税

/我的账户/营业场所/001A4BF5891C1EE1A0B1190619534001/账户/85-0000286922

/我的账户/营业场所/001A4BF5891C1ED1A5F2C3BD506D0E07/账户/概述

预期产出 /我的账户/经营场所/账户/概述

/我的账户/账户/关税

/我的账户/营业场所//账户/


/my account/premises/accounts/overview

Azure SQL数据仓库不支持正则表达式

您可以做的是使用from U-SQL,即在U-SQL脚本中从仓库获取数据,使用正则表达式进行转换,然后作为平面文件输出。使用Polybase将该平面文件导入数据仓库。U-SQL ADLA还不能直接写入SQL DW

示例脚本:

USING rx = System.Text.RegularExpressions.Regex;

/*!!TODO do federated query to Azure SQL Data Warehouse here instead
@input =
    SELECT *
    FROM EXTERNAL MyAzureSQLDWDataSource LOCATION "dbo.yourTable";
*/ 
@input = SELECT *
        FROM (
        VALUES
            ( "/my-account/premises/001A4BF58F8C1EE1ACE8ED6A65698305/accounts/overview" ),
            ( "/my-account/001A4BF5891C1ED1A5F27409BC0A1D02/accounts/851008500240-1602-1512164572/tariff" ),
            ( "/my-account/premises/001A4BF5891C1EE1A0B1190619534001/accounts/85-0000286922" ),
            ( "/my-account/premises/001A4BF5891C1ED1A5F2C3BD506D0E07/accounts/overview" )
        ) AS t( yourPath );


@output =
    SELECT rx.Replace(yourPath, @"/([0-9]|[A-F]|-){13,32}", "") AS cleanPath
    FROM @input;


OUTPUT @output
TO "/output/output.csv"
USING Outputters.Csv(quoting : false);
我的结果:


阅读有关联合查询的更多信息。RegEx与来自的帮助结合在一起。

这很酷,很有意义。谢谢@wBob。利用你的想法,我只是在Azure databricks而不是ADLA上实现了它。如果能在这里更多地了解你的方法,那就太好了。考虑把Databricks的例子作为答案吗?