用途:帮助开发者深入理解 LookML 的 include、refinements(分层)与项目结构最佳实践,掌握 Looker 的面向对象建模能力。
主要能力:
- Includes 机制:用 include 让视图、Explore、仪表板等对象在当前文件可用。支持通配符 * 匹配任意字符串,/views/.view 为绝对目录下全部视图,.view 为当前目录,/**/.view 递归当前目录及子目录,//project-name/views/.view 为远程项目导入(需项目 manifest)。建议写具体路径,避免命名空间冲突与性能膨胀。
- Refinements(分层):在不改动原文件的前提下修改已有视图或 Explore,适用于 Hub & Spoke 模式、以及定制只读的供应商 Block(如 Google Analytics)而无需 fork。语法为在原名前加 +,如 view: +users { ... }。使用前必须先 include 原文件。规则为“最后 include 生效”,新增参数为附加、已有参数被覆盖;list 类参数(如 drill_fields)常被整体替换而非合并,显式重写更安全。修改字段时以完全相同的名称重新声明,只需写出要改的参数。
- One Explore Per File 模式:用 .explore.lkml 文件承载单个 Explore,模型文件只 include 这些文件、不定义 Explore。好处是连接只解析所需内容以提升性能、视图命名冲突被隔离在具体 Explore 文件内、多人协作时模型文件不易产生合并冲突。
使用方式:在模型文件中通过 include 引入 Explore 文件,在 Explore 文件内 include 其所需视图并定义 explore。需要在特定 Explore 内定制视图时,可在该文件内写 refinements。
示例:对只读块视图先 include 原文件,再用 view: +users 新增 email 维度或修改 name 的 label/description;在 marketing_orders.explore.lkml 中仅 include orders 与 users 视图,用 refinement 加 acquisition_channel,并定义 explore 与 join。
适用场景:企业级 LookML 项目、供应商 Block 定制、按团队或用途拆分模型的协作环境。
限制:需遵守 include 顺序与覆盖规则;list 参数合并行为依实现而定;远程导入依赖项目 manifest。其他细节暂未提供。