创建 Fabric 用户数据函数项(预览)

在本指南中,我们将创建新的用户数据函数项,并在其中编写新函数。 每个用户数据函数项都包含用于定义可单独运行的一个或多个函数的代码。

具体来说,你将学习如何:

  • 创建用户数据函数项。
  • 编写新函数。
  • 管理函数。
  • 运行函数。

先决条件

创建新的 Fabric 用户数据函数项

  1. 选择你的工作区,然后选择“+ 新建项”。
  2. 选择“所有项”作为项类型。 搜索“用户数据函数”并将其选中。

创建新的用户数据函数项

  1. 在工作区中,选择“+ 新建项”。

  2. 在打开的窗格中,搜索 user data functions,然后选择磁贴。

    显示“新建项”窗格中的“用户数据函数”磁贴的屏幕截图。

  3. 为用户数据函数项提供一个名称。

  4. 选择“新建函数”,创建一个 Python 函数模板。hello_fabric 函数资源管理器会显示已发布且已准备好调用的所有函数。

    显示如何使用模板新建函数的屏幕截图。

  5. 发布 hello_fabric 函数后,可以从函数资源管理器中的函数列表中运行它。

    显示 hello-fabric 函数的代码的屏幕截图。

从示例中添加新的函数

该示例显示如何从 Insert sample 菜单中添加新函数。 在这种情况下,我们将添加一个名为“使用 pandas 库操作数据”的函数,它要求使用 pandas 按照步骤添加此示例函数:

  1. 选择“库管理”,添加函数所需的库。

    显示如何管理库的屏幕截图。

    注释

    fabric_user_data_functions 库会默认添加,且无法删除。 要使用户数据函数正常工作,需要此库。 需要为此 SDK 的任何将来版本更新此库的版本。

  2. 选择 pandas 库并选择版本。 添加库后,它会自动保存在用户数据函数项中。

    显示如何添加 pandas 库的屏幕截图。

  3. 选择“插入示例”并选择“使用 pandas 库操作数据”。 此操作将在代码底部,在其他函数之后插入示例代码。

    显示如何插入使用 pandas 库的示例的屏幕截图。

  4. 将示例插入编辑器后,可以选择“发布”来保存更改。 发布更改可能需要几分钟时间。

    显示编辑器中示例的代码片段的屏幕截图。

  5. 发布完成后,会在函数资源管理器列表中看到新函数。 此函数现在可以从门户运行,或者从另一个应用程序或 Fabric 项(例如数据管道)调用。

    显示编辑器中示例的代码片段的屏幕截图。

运行函数

  1. 选择“运行”图标,将光标悬停在函数资源管理器列表中的某个函数上时,会显示此图标。

    显示如何测试数据函数的屏幕截图。

  2. 在函数资源管理器中以窗体形式传递所需的参数。 在这种情况下,我们将运行 manipulate_data 函数,该函数需要 JSON 字符串作为参数。

    [
     {
      "Name": "John",
      "Age": 22,
      "Gender": "male"
     }
    ]
    
  3. 选择“运行”以运行该函数。

    显示成功执行函数时出现的输出的屏幕截图。

  4. 可以查看实时日志和函数的输出,以验证函数是否成功运行。 或者,你会看到来自函数调用的错误消息和日志。

编写新函数

每个可运行的函数在函数定义之前都以 @udf.function() 修饰器开头。 详细了解我们的 Python 编程模型。 若要编写新函数,请在开头使用 @udf.function() 修饰器来将其声明为可运行的函数。 下面是示例函数:

# This sample allows you to pass a credit card number as an integer and mask it, leaving the last 4 digits. 

@udf.function()
def maskCreditCard(cardNumber: int)-> str:
    # Convert the card number to a string
    cardNumberStr = str(cardNumber)
    
    # Check if the card number is valid
    if not cardNumberStr.isdigit() or not (13 <= len(cardNumberStr) <= 19):
        raise ValueError("Invalid credit card number")
    
    # Mask all but the last four digits
    maskedNumber = '*' * (len(cardNumberStr) - 4) + cardNumberStr[-4:]
    
    return str(maskedNumber)

函数准备就绪后,请发布函数以运行它。

编程模型关键概念

用户数据函数使用用户数据函数 Python 编程模型来创建、运行、调试和修改各个函数。 这是第一方库,它提供在 Fabric 中调用函数和利用所有集成所必需的功能。

创建第一个函数后,代码的前几行将包含 import 语句,其中包含运行模板所需的库。

import datetime
import fabric.functions as fn
import logging

udf = fn.UserDataFunctions()

注释

要使函数正确运行,需要具有包含 fabric.functions 库的 import 语句和包含 udf = fn.UserDataFunctions() 语句的行。 如果缺少这些行,函数将无法正常工作。

  • 若要创建、运行和管理函数,需要 fabric.functions SDK 和其他几个重要的库,例如 logging,它可用于编写自定义日志。
  • udf=fn.UserDataFunctions() 是用于定义用户数据函数项中的函数的构造。

管理数据函数

重命名函数

  1. 选择代码编辑器并更新函数的名称。 例如,将 hello_fabric 重命名为 hello_fabric1。 下面是一个示例:

    @udf.function()
    def hello_fabric1(name: str) -> str:
       logging.info('Python UDF trigger function processed a request.')
    
       return f"Welcome to Fabric Functions, {name}, at {datetime.datetime.now()}!"
    
  2. 更改名称后,选择“发布”来保存这些更改。

  3. 发布更改后,可以在函数资源管理器中查看函数的新名称。

删除函数

若要删除函数,请在代码编辑器中选择函数代码并删除整个代码部分。 发布更改,以从用户数据函数项中完全删除它。

例如,若要删除 hello_fabric 函数,请删除以下代码块:

@udf.function()
def hello_fabric(name: str) -> str:
    logging.info('Python UDF trigger function processed a request.')

    return f"Welcome to Fabric Functions, {name}, at {datetime.datetime.now()}!"

删除代码后,可选择“发布”以保存更改。 发布完成后,会在函数资源管理器中看到可用函数的更新列表。

后续步骤