本指南可帮助您排查 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 }};;