azure-sql-database - Azure SQL DW 中的 regexp_replace

标签 azure-sql-database azure-synapse

Azure SQL DW 中是否有像 Oracle/或任何其他关系数据库中那样的 REGEXP_REPLACE 内置函数替换功能?

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

输入

/my-account/premises/001A4BF58F8C1EE1ACE8ED6A65698305/accounts/overview

/my-account/001A4BF5891C1ED1A5F27409BC0A1D02/accounts/851008500240-1602-1512164572/关税

/my-account/premises/001A4BF5891C1EE1A0B1190619534001/accounts/85-0000286922

/my-account/premises/001A4BF5891C1ED1A5F2C3BD506D0E07/accounts/overview

预期输出

/我的帐户/前提/帐户/概述

/我的帐户/帐户/关税

/我的帐户/前提//帐户/

/我的帐户/前提/帐户/概述

最佳答案

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

你可以做的是使用 federated query从 U-SQL,即在 U-SQL 脚本中从仓库获取数据,使用 RegEx 对其进行转换,然后输出为平面文件。使用 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);

我的结果:

My results

了解有关联合查询的更多信息 here 。正则表达式在 https://regex101.com/ 的帮助下组合在一起.

关于azure-sql-database - Azure SQL DW 中的 regexp_replace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50359786/

相关文章:

sql - 执行列级加密后重新调整列大小(始终加密)

用户代码未处理 AZURE:ProviderInknownException

Azure Synapse 分析 - Synapse 链接身份验证

azure - 是否可以在映射数据流中维护文件夹结构和接收器文件?

Azure 数据流聚合转换不显示 groupby 下拉列表中的列

asp.net-mvc - 如何将SQL表数据导入Redis缓存?

sql-server - 将本地数据库迁移到 sql azure 数据库时,它会忽略所有表创建脚本中的 DEFAULT (newid())

azure - 在哪里检查谁在 Azure Synapse 中运行管道

azure - 将新用户添加到 Azure Synapse Analytics 工作区时需要哪些权限?

azure - 将 .bak 文件导入 Azure SQL 数据库