mcpField
L
lookml-tests

lookml-tests

github.com/looker-open-source测试与质量43146 次安装2 周前更新
代码仓库

关于 lookml-tests

lookml-tests 是用于编写 LookML 测试的开发技能,面向维护语义模型和数据质量的团队。它覆盖主键完整性、指标准确性与业务逻辑验证,并提供组织和性能建议。

主要功能

  1. 01按 Explore 组织测试文件
  2. 02使用查询与断言构建测试
  3. 03检查主键唯一性
  4. 04验证指标值与业务规则
  5. 05通过筛选控制扫描范围

适用场景

  1. 01发现关联导致的主键重复
  2. 02核对收入等指标是否符合预期
  3. 03检查计算关系和空值约束

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/looker-open-source/looker-skills --skill lookml-tests

安装后在 Claude Code 中输入/lookml-tests确认已加载。

详细介绍

LookML 测试规范

测试对于维护数据可信度至关重要。LookML 测试可让我们验证语义模型是否按预期运行,以及底层数据是否符合我们的假设。

1. 文件组织

  • 位置:在 tests/[explore_name].test.lkml 中定义测试。
  • 每个 Explore 一个测试套件:每个文件应包含特定 Explore 的所有测试定义。
  • 命名约定:[explore_name].test.lkml(例如,orders.test.lkml)。

2. 测试结构

每项测试都由一个 explore_source 查询和一条 assert 语句组成。

test: [test_name] {
  explore_source: [explore_name] {
    column: [column_name] { field: [view_name].[field_name] }
    filters: {
      field: [view_name].[field_name]
      value: "[value]"
    }
  }

  assert: [assertion_name] {
    expression: ${[view_name].[field_name]} [operator] [value] ;;
  }
}

3. 测试类型

A. 完整性检查(关键)

验证联接后主键是否保持唯一。这是防范由不正确的 one_to_many 联接定义导致的“扇出”错误的最佳方法。

示例:主键唯一性

test: orders_pk_is_unique {
  explore_source: orders {
    column: order_id {}
    column: count {}
    # Limit to recent data to save costs/time if table is large
    filters: {
      field: orders.created_date
      value: "last 7 days"
    }
  }

  assert: order_id_is_unique {
    expression: ${orders.count} = 1 ;;
  }
}
B. 准确性测试

根据已知常量或预期值验证特定度量值。

示例:收入为正

test: revenue_is_positive {
  explore_source: orders {
    column: total_revenue {}
    filters: {
      field: orders.created_date
      value: "yesterday"
    }
  }

  assert: revenue_greater_than_zero {
    expression: ${orders.total_revenue} >= 0 ;;
  }
}
C. 业务逻辑验证

确保计算结果符合预期。例如,检查 gross_margin 是否始终不大于 revenue,或者活跃用户的 lifetime_orders 是否始终不为 NULL。

示例:逻辑检查

test: margin_less_than_revenue {
  explore_source: orders {
    column: total_revenue {}
    column: total_margin {}
  }
  
  assert: margin_is_valid {
    expression: ${orders.total_margin} <= ${orders.total_revenue} ;;
  }
}

4. 最佳实践

  • 描述性扩展名:为测试(orders_pk_is_unique)和断言(order_id_is_unique)使用清晰易懂的名称。
  • 性能:对于大型表,使用筛选条件(例如,last 7 days)限制扫描范围,除非需要验证完整历史数据。
  • 模型包含:确保模型文件包含 test 文件(例如,include: "/tests/*.test.lkml")。

评论

支持 Markdown