白杨商业智能工作室
#技术分享#Power BI#Fabric#数据仓库

Fabric 数据仓库与 Fabric 用户数据函数集成(预览版)

· 白杨BI工作室

Fabric Data Warehouse(数据仓库)与 Fabric User Data Functions(用户自定义函数)的集成已进入预览阶段。这项能力的核心价值在于:你不再需要为了跑一段 Python 逻辑而单独搭一套应用或管道,直接在 T-SQL 里调用 Python 函数即可。

Fabric 数据仓库与 Fabric 用户数据函数集成(预览版)

Fabric Data Warehouse(数据仓库)与 Fabric User Data Functions(用户自定义函数)的集成已进入预览阶段。这项能力的核心价值在于:你不再需要为了跑一段 Python 逻辑而单独搭一套应用或管道,直接在 T-SQL 里调用 Python 函数即可。对于长期在仓库层用 T-SQL 做数据加工的团队来说,这意味着扩展能力的路径变短了——自定义逻辑以函数的形式注册一次,就能在 SELECT、INSERT、UPDATE 等常规语句中反复调用。

具体机制是:在 Warehouse 中创建 T-SQL 外部函数(EXTERNAL FUNCTION),指向某个 User Data Functions 项里的 Python 函数。调用发生时,Data Warehouse 把执行委托给 User Data Functions 运行时,结果再回到 T-SQL 查询中。这种"T-SQL 编排、Python 执行"的分工,让两边各自发挥擅长的部分。

典型场景:T-SQL 不擅长的事交给 Python

集成覆盖的场景相当务实,基本围绕 T-SQL 的短板展开:

  • 调用外部能力:触发 Fabric 或外部 API,发送邮件、Teams 消息或通知。
  • 解析非结构化文件:借助 Python 读取 Excel、XML、PDF 等格式。
  • 跨源访问数据:读写 OneLake 中的数据,以及跨工作区访问 Fabric 数据库、Azure Cosmos DB 和仓库。
  • 管理密钥与配置:从 Azure Key Vault 或 Fabric variable libraries(变量库)获取机密和配置值,用于参数化自定义逻辑。
  • 敏感数据处理:用自定义 Python 逻辑配合组织管理的密钥,对敏感列做加密、解密或脱敏。
  • 数据增强与校验:地址地理编码、VAT/IBAN 号码验证,或用机器学习模型给记录打分。

这些任务的共同点是:用 T-SQL 实现要么极其笨拙,要么根本做不到,而 Python 生态里有现成的标准库或 SDK。

实例:用 Python 对 IPv6 事件做网络前缀分类

按网络前缀对 IPv6 事件分类,是安全分析的常见需求。但 IPv6 地址的解析和二进制运算在 T-SQL 里写起来相当痛苦。Python 标准库里的 ipaddress 模块正是为此而生。

下面的 Python 函数接收一个 IPv6 地址和前缀长度,返回 CIDR 表示法下的网络前缀:

import ipaddress
import fabric.functions as fn

udf = fn.UserDataFunctions()

@udf.function()
def getIpv6Network(address: str, prefixLength: int) -> str:
    interface = ipaddress.ip_interface(f"{address}/{prefixLength}")
    return str(interface.network)

发布后,将它映射为 T-SQL 外部函数:

CREATE FUNCTION ipv6.get_network
AS EXTERNAL FUNCTION utilities.getIpv6Network;

接着就能在更新语句中为每条事件计算并持久化 /48 网络前缀:

UPDATE dbo.NetworkEvents
SET NetworkPrefix = ipv6.get_network(SourceIp, 48)
WHERE NetworkPrefix IS NULL;

每次调用 ipv6.get_network 都会委托给 User Data Functions 运行时执行。结果写入 NetworkPrefix 列后,下游查询直接使用该列即可,无需重复计算——这一点很关键,把计算成本一次性摊掉,而不是让每个分析查询都重新解析地址。

几点实践观察

从编辑视角看,这项集成有几个值得注意的地方。其一,外部函数的调用是逐行的,在大批量 UPDATE 场景下要留意 User Data Functions 运行时的吞吐表现,必要时先用小样本验证。其二,把密钥读取放在函数内部虽然方便,但要注意函数被频繁调用时的额外开销,能缓存的配置值尽量缓存。其三,这种模式最适合"计算一次、复用多次"的场景,比如上面的网络前缀持久化,而不是在每次查询时实时调用外部 API。

收束

Fabric User Data Functions 与 Data Warehouse 的集成,本质上是把 Python 的表达力嵌进了 T-SQL 的工作流,让团队不必为了个别复杂逻辑而分裂出独立的应用或管道。预览阶段是验证适用边界的好时机:哪些逻辑值得注册为外部函数、哪些仍应留在纯 T-SQL 里,需要在真实负载下判断。相关用法可参阅官方文档,反馈也可以通过 Microsoft Fabric 社区提交。

相关文章

微软重磅调整:Azure SQL弃用SGX加密意味着什么

微软重磅调整:Azure SQL弃用SGX加密意味着什么

微软 Azure SQL 数据库近日宣布,将正式停用基于英特尔 SGX 安全区域的 Always Encrypted 加密方案,这一变化标志着云端机密计算在数据库加密领域的一次重要技术路线调整。

#技术分享#Azure SQL
Azure SQL数据库中心性能监控来了,你的数据库终于有救了

Azure SQL数据库中心性能监控来了,你的数据库终于有救了

微软近日宣布,Azure SQL 数据库中心(Database Hub)的性能监控功能正式进入公共预览阶段,用户现可在统一门户中直接查看数据库运行指标,无需在多套工具间来回切换。

#技术分享#Azure SQL
微软Fabric数据库中心公共预览开放,数据开发迎来巨变

微软Fabric数据库中心公共预览开放,数据开发迎来巨变

数据库管理正在从被动运维走向主动洞察。微软近日宣布,Fabric 中的数据库中心(Database Hub)正式进入公共预览阶段,这项新能力将数据库运行信号转化为可执行的引导式操作,让数据资产的管理者第一次拥有了驾驶舱式的全局视野。

#技术分享#Azure SQL
SQL Server Always On终于支持多数据库MI链接了

SQL Server Always On终于支持多数据库MI链接了

微软近日宣布,Azure SQL 托管实例(MI Link)现已支持在 SQL Server 的 Always On 可用性组中同时连接多个数据库,该功能目前处于预览阶段。这意味着企业可以在混合云架构下,更灵活地实现多数据库的云端灾备与只读分流。

#技术分享#Azure SQL
Azure SQL数据库无服务器也能自动暂停?省钱大招来了

Azure SQL数据库无服务器也能自动暂停?省钱大招来了

微软近日宣布,Azure SQL 数据库的超大规模无服务器版本正式进入自动暂停与自动恢复功能的公开预览阶段。这意味着企业可以在业务低谷期让数据库自动休眠,在请求到来时秒级唤醒,从根本上重构云数据库的成本模型。

#技术分享#Azure SQL
SQL数据同步退役倒计时,你的数据库迁移方案准备好了吗

SQL数据同步退役倒计时,你的数据库迁移方案准备好了吗

微软近日宣布,Azure SQL 数据同步服务(SQL Data Sync)正式进入退役的最后阶段,该服务将不再支持新的同步组创建,现有用户需尽快迁移至替代方案。 - 停止新建同步组:用户已无法通过门户或 API 创建新的数据同步组,现有同步组仍可运行,但不再获得功能更新。

#技术分享#Azure SQL
有问题?加企业微信 1 对 1 交流 👇
➕ 添加企业微信
备注「白杨」优先通过 · 数据洞察与智能决策
企业微信
企业微信
备注「白杨」优先通过