排查 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 %}

液体显示的值不正确

在这些情况下,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 }};;