当从 Explore 中传递过滤器时,无论出于何种原因,我们都无法让它在查询条件中提供双单引号。
在视图内的查询中有拉取提交值的条件:
如下所示
WHERE {% condition bill_id %} bill_id {% endcondition %}
用于传递变量。
生成的查询如下所示:
这在普通查询中没问题,但由于 SQL Server 和我们从中提取信息的链接服务器存在兼容性问题,我们必须在此处使用
OPENQUERY()
。因为我们使用 OPENQUERY,所以我们需要双引号来传递 OPENQUERY 查询字符串中的变量。
本质上我们需要视图中的查询结果如下所示:
但无论我们出于某种原因尝试添加额外的单引号,looker 似乎都会删除它们并且仅使用单引号。像这样:
所以问题归结为:
有谁知道如何从探索中将变量传递到视图中的查询并对其进行格式化,以便它使用双单引号而不是单单引号。
我们尝试了一些方法来格式化此条件以包含双单引号。由于 Looker 使用 Liquid html,我们尝试与
|
连接,并且我们也尝试使用 append:
。
我们可以做什么来接受这个:
WHERE {% condition bill_id %} bill_id {% endcondition %}
结果是:
WHERE (bill_id = 'value')
改为这样:
WHERE (bill_id = ''value'')
如果您只需要支持相等比较,您应该能够使用液体参数而不是模板化过滤器来完成此操作。 文档。
view my_view {
derived_table: {
sql:
select * from openquery(DBXA, '
select *
from asdf_chg_audt
where asdf_bill_id = ''{% parameter filtered_bill_id %}''
'
;;
}
parameter: filtered_bill_id {
type: unquoted
}
}
我想回来更新这篇文章,并用我直接从 Looker 代表那里学到的东西来更新。
我们发现,如果我们希望能够维护字段中所需的双单引号,则未加引号的部分不适用于单词之间的空格之类的内容。这需要一个字符串字段。因此,为了能够提取所有内容,无论其格式如何,我们可以使用以下视图逻辑。
如果您在参数
{{ "'" }}
之前和之后应用 {% parameter value %}
,则 Looker 不会删除第二组单引号,因此我们现在有双单引号,因为参数字段也应用单引号。
输入:
Test Value
输出
''Test Value''
view: pbc_charge_codes {
derived_table: {
sql: SELECT * FROM OPENQUERY(PBCLOUD, '
SELECT * FROM REFERENCE_CODE
WHERESEARCH_VALUE= {{ "'" }}{% parameter value %}{{ "'" }} ') ;;
}
parameter: value {
type: string
label: "Search By Value"
}