排查 Liquid 错误

本指南可帮助您排查 LookML 中的 Liquid 错误。

调试树

请使用以下决策树排查常见的 Liquid 问题:

以下部分将更详细地介绍树中的场景。

错误:找不到变量

检查该字段是否可在探索中访问

如果您引用的字段在探索中无法访问,则可能会出现此错误。

首先,检查字段名称中是否存在拼写错误。然后,检查确保定义字段的视图已联接到探索中。

错误:Liquid 解析异常

在 IDE 中验证 LookML 时或运行查询时,可能会出现此错误。以下部分介绍了此错误的常见原因。

关闭所有单引号或双引号

检查是否存在已打开但未关闭的单引号或双引号。例如,以下代码会抛出错误:

{% if value == "Shirt %}
  This is a shirt.
{% endif %}

如需解决此错误,请闭合引号。

{% if value == "Shirt" %}
  This is a shirt.
{% endif %}

使用双等号 (==) 进行比较

检查某个值是否等于另一个值时,请勿使用单个等号。以下代码会抛出错误:

{% if value = "Shirt" %}
  This is a shirt.
{% endif %}

如需解决此错误,请改用两个等号 (==)。

{% if value == "Shirt" %}
  This is a shirt.
{% endif %}

使用正确的标记语法

请勿在 if 语句周围使用输出语法,也不要在单个值周围使用标记语法。以下代码会抛出错误:

{{ if value == "Shirt" }}
  This is a {% value %}.
{{ endif }}

请改用输出语法来插入各个值,并使用标记语法来执行逻辑比较和运算。

{% if value == "Shirt" %}
  This is a {{ value }}.
{% endif %}

请勿嵌套 Liquid 标记

请勿在 Liquid 标记内使用其他 Liquid 标记。例如,以下代码会引发错误:

{% if value > {{ view_name.field_name._value }} %}
  This value is larger.
{% endif %}

如需解决此错误,请移除嵌套标记:

{% if value > view_name.field_name._value %}
  This value is larger.
{% endif %}

Liquid 显示的值不正确

在这些情况下,LookML 通常会通过验证,不会出现任何错误,但在对探索运行查询时,您会看到意外的结果。

将 yesno 值大写

如果您使用 Liquid 检查 yesno 字段的值,请检查是否有未大写的值。以下代码不会匹配 yes 条件的任何结果:

{% if value == "yes" %}
  This is a shirt or shoes.
{% endif %};;

请改为将“是”和“否”值设为大写。

{% if value == "Yes" %}
  This is a shirt or shoes.
{% endif %};;

检查是否支持 Liquid 参数

如果您在不支持某个 Liquid 参数的 LookML 参数中引用该 Liquid 参数,Looker 将忽略该 Liquid 参数。

例如,以下代码不会返回任何内容,因为 parameter parameter_name 语法不支持用于 html LookML 参数。

html: {% parameter parameter_name %};;

请查看 Liquid 变量参考,了解哪些 LookML 参数支持哪些 Liquid 参数。对于此示例,您可以将代码重写为以下形式:

html: {{ parameter_name._parameter_value }};;