MicroStrategy ONE

创建支持 Python 的交易仪表板

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

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

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

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

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

  • 创建启用交易的仪表板

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

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

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

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

创建自定义运行时

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

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

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

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

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

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

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

  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. 软件包通常支持与数据源的连接,以写回数据更改,支持使用 MicroStrategy 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 网络特权:

  • 使用 Library 网页

  • 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. 单击提交

系统配置建议

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

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

调整运行时实例大小

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

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

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

  4. 调整 运行时实例大小

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

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

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

大型容器环境还会消耗大量内存,这会导致主机性能问题,并可能导致容器崩溃。 MicroStrategy 容器对于 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 事务配置同步