Openrefine GREL:qq关于模板导出和空值(开放精炼)

Openrefine GREL:qq关于模板导出和空值(开放精炼),openrefine,grel,Openrefine,Grel,有比这更优雅的表达方式来避免打印空字符和“空”字吗? 通过阅读OpenRefine的文档,我做到了以下几点,但感觉有些奇怪和复杂 干杯 { "rows" : [ {{ if(isNull(cells["supplierID"].value), "", " \"supplierID\" : " + jsonize(cells["supplierID"].value)

有比这更优雅的表达方式来避免打印空字符和“空”字吗? 通过阅读OpenRefine的文档,我做到了以下几点,但感觉有些奇怪和复杂

干杯

{
  "rows" : [
{{ if(isNull(cells["supplierID"].value),
"",
"      \"supplierID\" : " + jsonize(cells["supplierID"].value)

)}},

{{ if(or(isNull(cells["homePage"].value), cells["homePage"].value == "NULL"),
"",
"      \"homePage\" : " + jsonize(cells["homePage"].value)

)}}

  ]
}

通常,我的目标是在执行导出之前使列保持一致(即在所有情况下都包含
null
值,或者在所有情况下都包含字符串“null”,但不能混合使用)。因此,您可以首先对列运行转换,如:

if(value=="NULL",null, value)
如果要先执行此操作,则可以在导出模板中使用:

forNonBlank(cells["homepage"].value,v,"      \"homePage\" : " + jsonize(v),"")
但是,如果您出于某种原因不想对数据进行此更改,则可以通过使用从列表中选择第一个非空值的“coalesce”函数(从OpenRefine 3.0开始提供)实现比现有选项稍微优雅的选项:

{{ if(coalesce(cells["homepage"].value,"NULL")=="NULL","","      \"homePage\" : " + jsonize(cells["homePage"].value)) }}
合并将使用单元格[“主页”]的值。如果该值不为null,则使用该值;如果单元格[“主页”],则返回使用字符串“null”。值为null。因此,这意味着,如果向单元格提供内容字符串“NULL”或具有
NULL
的单元格,则在这两种情况下,coalesce函数都会输出字符串“NULL”,这意味着您只需检查单个条件


coalesce记录在

是的,我在列中使用了“if(value==”NULL“,”,)”,但我想知道在导出部分中是否已经有要“批量”的内容。我试图使用coalesce,但失败了。谢谢你知道有什么GREL课程吗?文档很好,但用例教的更多。OpenRefine有一些课程,但它们不可避免地没有涵盖所有方面。看见目前还正在重写用户文档,重点是使用可能有帮助的清晰示例。当前wiki上的Recipes页面通常也有助于提供示例