Strategy ONE

创建支持 Python 的交易仪表板

从 MicroStrategy ONE 开始  (2024 年 3 月),您可以在 MicroStrategy Cloud 环境和 MicroStrategy Cloud for Government 平台上创建支持 Python 的交易仪表板。要创建并执行支持 Python 的交易仪表板,您必须:

  • 确保环境支持使用 Python 执行器

    该功能在 Microstrategy 云环境平台上受支持。接触策略支持启用此功能。

  • 选择具有公共端点的数据源来写回数据更改

  • 将元数据更新至最新版本

  • 创建启用交易的仪表板

  • 创建自定义运行时并下载所有必要的 Python 包作为该运行时的一部分

  • 创建包含所需数据操作操作的 Python 脚本

  • 使用相关脚本配置仪表板

开始使用创建启用交易的仪表板然后按照以下步骤操作。

创建自定义运行时

需要管理运行时权限。具有此权限的用户可以下载第三方软件包,因此只有经过审查的分析师才应该拥有此权限。

创建和编辑 Python 运行时了解更多信息。

具有管理运行时权限的用户可以查看和管理当前现有的运行时并创建新的运行时。所有环境都有一个默认运行时。创建运行时时,用户可以更改其名称、描述、可连接的地址、安装在其上的包,并选择脚本执行的大小。运行时实例的大小决定了与该运行时相关的每个脚本执行可用的资源(CPU 和内存)。

  1. 打开工作站和连接到环境
  2. 在导航窗格中,单击監視器

    所有环境都有默认的运行时名称(默认)Strategy

    默认运行时包括 Python 和 mstrio 包的最新版本,以及默认实例大小和默认网络访问配置。用户可以使用 mstrio 包来访问Strategy使用默认运行时的数据。

    用户无法更改默认运行时的配置。如果用户想要自定义实例大小、网络访问或包配置,他们必须创建一个新的运行时。

  3. 在左侧窗格中,单击旁边运行时

  4. 输入运行时名称描述。新创建的运行时使用最新的Python 版本。对于现有的运行时,您可以升级到最新的 Python 版本。默认运行时实例大小0.2 vCPU 0.5 GB 内存

  5. 网络访问,从 Python 运行时进入允许访问的网络。格式必须遵循无类域间路由 (CIDR)格式,例如141.193.213.21/32。

  6. 点击在左下角添加一个要在 Python 运行时安装的新包。如果没有提供软件包版本,则安装最新版本。使用格式:[包名称][空格][包版本]。

    示例:

    • 请求 2.28.1

    • 请求

  7. 单击添加

  8. 软件包通常支持连接到数据源以写回数据更改,支持使用Strategy API,或连接到其他应用程序,例如 Microsoft Teams。单击 Pypi 链接查找要下载的确切包名称和版本。

  9. 点击添加保存运行时间并等待安装完成。刷新页面以检查状态。

一些有用的提示:

  • 确保在输入每个字段(网络访问、软件包名称和版本)后按下 Enter 键,然后再单击添加或者好的确认更改。

  • 您可以将多个包添加到一个运行时。

  • 将对象从一个环境迁移到另一个环境后,在新环境中重新添加包以准备好运行时。如果没有这个额外的步骤,运行时就无法工作。

  • 默认情况下,每个人有一个看法运行时的 ACL。

创建自定义 Python 脚本

设置具有以下权限的用户:

  • 使用 Python 脚本

  • 认证 Python 脚本

  • 建议使用以下ACL:

    • 读取脚本需要脚本上的读取 ACL。

    • 更新脚本需要对脚本具有写入 ACL。

    • 执行脚本需要对脚本执行 ACL 和对运行时执行 ACL。

  1. 打开工作站和连接到环境
  2. 在导航窗格中,单击旁边脚本

  3. 打开脚本设置将脚本类型更改为交易并选择适当的 Python 运行时。

  4. 通过从库中选择一个模板并进行修改或从头开始来开始创建脚本。

  5. 脚本中的变量通常映射到仪表板网格中的列。定义变量时柱子参数默认处于开启状态。对于非事务变量,请关闭此功能,例如如果变量供内部使用,如连接到数据源。

  6. 对于数据源连接密码,选择非事务类型变量,秘密

  7. 考虑包含一个系统提示变量来记录用户的登录并查看谁在更改数据。

  8. 默认操作类型是选择、插入和更新。要创建除这些操作之外的新操作类型(例如结合选择和更新),请选择交易类型变量类型。在单个 Python 事务脚本中,只能将一个变量设置为交易类型

  9. 对于映射到写回数据源中表的主键的变量,您不希望消费者修改主键。在这种情况下,您应该禁用可编辑范围。

  10. 对于数据源中不允许 NULL 值的列,请通过打开必需的范围。

  11. 如果变量不是必需的,作者可以选择是否将某一列留空,这取决于数据库允许的情况。

  12. 对于您希望用户编辑的列,请打开可编辑范围。

  13. 只有经过认证的交易 Python 脚本才能用于交易操作,因此一旦脚本准备好用于生产,您就应该对其进行认证。将使用 Python 事务网格的用户组应该具有此脚本的查看 ACL。

最佳实践

  • 从示例代码模板中学习。

  • 对于支持原子事务的数据源,在准备运行时选择支持原子事务的包。在 Python 脚本中,添加部分来处理原子事务。

  • 适用时使用参数化查询。以这种方式执行的查询不易受到注入攻击,因为查询和参数是单独发送执行的。

  • 由于 Python 交易脚本创建者和交易仪表板作者可能不是同一个人,因此请确保脚本和仪表板之间的奇偶校验。这包括要写回的数据源表的定义、Python 脚本中定义的变量与仪表板事务网格对象之间的映射关系、哪个对象是可编辑的等等。

  • 脚本中应包含 Python 脚本支持内容的详细描述(更新数据、插入新数据、选择要删除或插入到其他表的行、发送 Microsoft Teams 消息、发送电子邮件等)。仪表板作者可以从仪表板编辑器中检索 Python 脚本的描述。只有具有适当权限和 ACL 的人才能打开 Python scr

使用关联的 Python 脚本配置仪表板

所需权限

要在仪表板上配置交易:

  • Web 配置事务

  • 使用 Python 脚本

  • 查看关联脚本的 ACL

要设置用户使用仪表板并提交更改:

  • 执行事务处理

  • 查看脚本的 ACL

其他所需的基本图书馆网络权限:

  • 使用 Library Web

  • Web 创建仪表板

  • Web 编辑仪表板

  • Web 保存仪表板

  • Web 运行仪表板

  • 创建应用程序对象

  1. 基于 Python 的交易旨在与现代电网配合使用。选择一个网格,打开格式面板,然后单击交易选项

  2. 点击使用 Python

  3. 选择动作类型并提供自定义的动作名称、按钮名称等。

    • 操作类型是您希望允许消费者在此仪表板上执行的操作。必须至少选择一个操作类型。

    • 赋予动作一个有意义的名称,描述该动作可以做什么,并赋予按钮一个名称。

      示例:

      • 动作名称更新客户年龄

      • 描述请在客户年龄栏中更新客户的年龄。

      • 按钮名称提交

    • 您可以组合操作。例如,您可以同时修改现有数据并添加其他数据行。选择能够相应反映此行为的动作名称。

  4. 点击选择 Python 脚本从仪表板所在的项目中检索所有事务 Python 脚本。默认情况下,仅显示经过认证的脚本。使用过滤器浏览列表并找到目标脚本。

  5. 选择脚本后,映射部分就会出现。选定的脚本名称会与信息图标一起出现,以显示脚本描述。在该部分的右上角,提供了一个用于替换所选脚本的图标和一个用于从元数据刷新脚本列表的图标。需要数据的变量以星号(*)标记。在这些情况下,必须提供映射来保存配置。

    动作类型

    • 允许修改网格中的数据可编辑选项已启用。作者可以选择他们希望消费者能够修改的变量。

    • 将数据添加到网格新数据输入选项被选中,您可以选择希望消费者能够插入的变量。

    • 对选定的行执行操作可编辑新数据输入选项均被禁用。在这些情况下,行号被传递给脚本。脚本决定对该行采取什么操作。例如,您可以使用此操作从网格中删除一行。

  6. 要配置输入控件,请参阅在网格中创建交易

  7. 点击添加更多操作并配置提交后显示的消息。

  8. 点击完毕完成您的交易,节省仪表板。

最佳实践

  • 根据写回数据变化的数据源,通常基于 SQL 的是首选。如果数据源是Web服务,Python是首选。

  • 对于将数据更改与发送电子邮件、更新 Slack 等操作相结合的更复杂的工作流程,请使用 Python 脚本。

  • 我们建议脚本变量和网格对象之间存在一对一的映射关系,以便于输入控制配置并定义网格对象是否可编辑。

使用 Python 事务进行数据操作

  1. 基于 Python 的事务不支持在线编辑,因此所有数据修改都以批量模式完成。点击铅笔图标开始修改数据。

  2. 单一操作支持选择和数据修改。

  3. 对于支持选择、修改或数据插入的操作,单击添加数据提供新的数据。完成后,单击添加

  4. 单击提交

系统配置建议

容器化环境允许您直接在Strategy环境中,无需让计算机保持运行。您可以在这些环境中保存脚本并在 Workstation 中的任何位置访问它们,也可以向其他管理员提供访问权限。目前仅针对容器化环境开启了服务器端脚本执行的支持。

您可以通过以下方式提高Python事务请求的性能:

调整运行时实例大小

  1. 在导航窗格中,单击監視器

  2. 在左侧窗格中,单击运行时

  3. 在网格中,右键单击运行时并选择编辑

  4. 调整运行时实例大小

为什么我应该改变运行时大小?

默认运行时大小可能不足以满足脚本的内存需求。通过增加运行时大小,您可以确保脚本有足够的内存来运行而不会出现错误或崩溃。例如,当使用脚本创建数据源时,最好使用更大的运行时间,因为用于创建表的脚本可以将它们加载到内存中。

使用大型环境会涉及哪些风险?

大型容器化环境还会消耗大量内存,这会导致主机出现性能问题,甚至可能导致容器崩溃。Strategy容器对于 Python 运行时而言内存有限。目前,对于容器化环境,其限制为 6 vCPU 和 20 GB 内存。定期评估容器环境的大小和复杂性并确保其符合您的性能、安全性和维护要求非常重要。最好在较小的运行时间内运行管理脚本以减少资源使用。

调整运行时设置

  1. 在导航窗格中,单击監視器

  2. 在左侧窗格中,单击运行时

  3. 在网格中,右键单击运行时并选择获取信息

  4. 在左侧窗格中,单击所有设置

  5. 调整运行时设置。

    脚本超时(秒) Python脚本执行的超时设置。默认设置为 600 秒。

    默认 Pod 实例数量缓存的 Python 执行实例的默认数量。

    Python执行实例如果一个 Python 脚本基于 Python 运行时运行,则会创建一个 Python 执行实例,并且可以根据默认 Pod 实例数量最大 Pod 实例数(总运行脚本限制)设置。

    最大 Pod 实例数(运行脚本总限制)根据运行时可创建的最大 Python 执行实例数。

运行时默认 Pod 实例数量 运行时最大 Pod 实例数(总运行脚本限制) 推荐
1 1 适用于使用率低、并发性低且对响应时间敏感的普通用户。由于 Python 执行器 pod 始终处于启动状态,因此可以减少 pod 预热时间,但总体成本较高。有一个吊舱始终处于开启状态。
1 N>1 适用于使用率较低、有一定并发性,但对响应时间不太敏感的普通用户。由于一个 Python 执行器 pod 始终处于启动状态,并且最多可以根据请求启动 N-1 个 pod,因此此配置可以支持更多的并发情况。有些用户的响应时间很好;其他用户可能会遇到 pod 预热时间。一个 pod 始终处于启动状态,最多可以启动 N-1 个 pod,并在特定时间启动,然后在闲置两分钟以上后停止
X>0 = 默认 Pod 实例数 适用于对响应时间敏感且并发使用较多的严肃用户。由于始终会有 X 个运行时容器,因此价格较高。

已知限制

表现

目前Python远程执行的逻辑是:

  • 当执行器 pod 生成时,针对特定运行时的定制包安装在持久卷上,并且持久卷被安装到 Python 执行器的容器上。

  • Python 服务的主进程负责请求和响应处理。实际的脚本执行由子进程启动。因此,每次执行 Python 脚本时,Python 解释器都会尝试将使用的包加载到子进程的内存中。

由于容器导入持久卷中的数据时仍存在一些延迟,因此即使 pod 已经预热完毕,子进程运行脚本也需要一些额外的时间成本。

数据源连接

对于私有本地数据源,如果 Python 执行器 pod 容器和私有数据源之间没有网络连接,则不支持 Python 事务。一般情况下,可以使用具有公共端点的数据源。

相关文章

KB486432:为 Python 事务配置映射 Python 脚本变量和网格字段的最佳实践

KB486431:在仪表板中将 Python 脚本修改与 Python 事务配置同步