Tradeshift 如何用 Amazon Quick 将传统 BI 升级为可盈利的智能分析产品

2026-07-21 38 预计阅读时间: 1 分钟
来源: aws.amazon.com AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:7 分钟

Tradeshift 用 Amazon Quick 及其智能体 AI 能力替换了传统 BI 工具。结果不只是报表加载更快:查询响应时间最高提升 30 倍,总拥有成本降低 40%,嵌入式分析也从后台功能变成了能够产生收入的产品。这说明 BI 现代化的价值,已经从“换一个仪表盘”转向“重构用户获取答案的方式”。

三个指标背后是三类架构变化

“最高 30 倍”描述的是最佳改善幅度,不应直接理解为所有查询的平均提升。评估迁移效果时,需要同时记录中位数、P95、错误率和并发吞吐量,并区分冷查询、缓存命中和高复杂度查询。

40% 的总拥有成本下降也不能只看许可证价格。传统 BI 的成本通常分散在多个位置:

  • 软件许可与基础设施
  • 数据抽取、缓存和刷新任务
  • 仪表盘开发与维护
  • 权限配置和客户隔离
  • 故障处理、升级和容量规划
  • 面向客户提供分析能力所需的定制工程

Amazon Quick 带来的业务变化尤其值得注意:嵌入式分析不再只是产品中的一个只读页面,而是可以包装进不同套餐、按客户或用量计费的能力。此时,分析系统需要同时满足性能、租户隔离、可观测性和产品计量要求。

智能体 AI 改变了查询入口

传统 BI 要求用户先知道该打开哪个仪表盘、选择哪些筛选条件。智能体式分析则可以接受目标导向的问题,例如:

比较本季度与上季度的逾期发票金额,按供应商地区分组,并指出变化最大的三个地区。

系统需要把这段自然语言转换为可治理的分析步骤:识别指标、解析时间范围、应用租户权限、选择数据源、执行查询,再用业务语言解释结果。

来源摘要没有披露 Tradeshift 的提示词、数据模型或具体 API,因此不能假定智能体可以绕过语义层直接访问任意表。可以这样实践:只向智能体公开经过审核的指标和维度,并在执行前生成结构化查询计划。

{
  "metric": "overdue_invoice_amount",
  "dimensions": ["supplier_region"],
  "filters": {
    "tenant_id": "tenant-123",
    "period": "current_quarter"
  },
  "comparison": "previous_quarter",
  "limit": 3
}

这种中间表示便于审计,也能阻止模型自行拼接未经授权的 SQL。租户标识应由服务端身份上下文注入,不能相信用户在提示词中提供的 tenant_id

用同一套基准验证“更快”

下面是一个可直接改造的 Python 基准脚本。它不假设 Amazon Quick 或旧 BI 的真实 API 形式,而是假定两个适配端点都接受相同的 JSON 查询,并返回任意 JSON 响应。运行前将 LEGACY_URLQUICK_URLAUTH_TOKEN 替换为测试环境配置。

#!/usr/bin/env python3
import json
import os
import statistics
import time
import urllib.request

RUNS = int(os.getenv("RUNS", "20"))
TOKEN = os.environ["AUTH_TOKEN"]
ENDPOINTS = {
    "legacy": os.environ["LEGACY_URL"],
    "quick": os.environ["QUICK_URL"],
}

QUERY = {
    "metric": "overdue_invoice_amount",
    "dimensions": ["supplier_region"],
    "period": "current_quarter",
}


def request_once(url):
    body = json.dumps(QUERY).encode("utf-8")
    request = urllib.request.Request(
        url,
        data=body,
        method="POST",
        headers={
            "Authorization": f"Bearer {TOKEN}",
            "Content-Type": "application/json",
        },
    )
    started = time.perf_counter()
    with urllib.request.urlopen(request, timeout=60) as response:
        response.read()
    return (time.perf_counter() - started) * 1000


def percentile(values, ratio):
    ordered = sorted(values)
    index = min(round((len(ordered) - 1) * ratio), len(ordered) - 1)
    return ordered[index]


results = {}
for name, url in ENDPOINTS.items():
    samples = [request_once(url) for _ in range(RUNS)]
    results[name] = samples
    print(
        f"{name:>6}: median={statistics.median(samples):.1f} ms "
        f"p95={percentile(samples, 0.95):.1f} ms"
    )

legacy_median = statistics.median(results["legacy"])
quick_median = statistics.median(results["quick"])
print(f"median speedup: {legacy_median / quick_median:.2f}x")
export LEGACY_URL='https://staging.example.com/analytics/legacy/query'
export QUICK_URL='https://staging.example.com/analytics/quick/query'
export AUTH_TOKEN='replace-with-a-short-lived-test-token'
export RUNS=30
python3 benchmark.py

测试端点应使用同一数据快照、相同租户权限和等价查询语义。还要分别运行冷缓存与热缓存测试,否则缓存策略差异可能被误认为查询引擎本身的性能提升。

从成本中心变成产品,需要补齐运营能力

把嵌入式分析收费之后,可用性问题会直接变成客户和收入问题。上线前至少应检查:

  • 每个租户的身份、行级权限和可见字段是否经过自动化测试
  • AI 生成的查询是否受指标目录、时间范围、行数和执行时限约束
  • 是否记录查询计划、数据版本、响应时间、错误和模型输出
  • 计费事件是否与成功交付的分析请求或套餐权益一致
  • 自然语言答案能否回溯到图表、指标定义或底层数据
  • 迁移期间是否保留回退路径,并对新旧结果进行差异校验

Tradeshift 的结果表明,传统 BI 迁移可以同时改善性能、成本和商业模式。但这三个目标不能只靠替换前端工具完成。真正的落地点是统一语义层、严格的租户治理、可重复的性能基准,以及把分析能力纳入产品定价和运营体系。


相关推荐