有没有比这更优雅的表达式来避免打印空值和单词"NULL"?通过阅读Open Refine的文档https://github.com/OpenRefine/OpenRefine/wiki/General-Refine-Expression-Language,我已经做到了这一点,但感觉很奇怪和复杂。
干杯。
{
"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)
)}}
]
}发布于 2020-08-23 06:16:00
通常,在进行导出之前,我的目标是使列保持一致(即,要么在所有情况下都包含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)) }}如果单元格“主页”.value为空,合并将使用单元格“主页”.value的值;如果单元格“主页”use为空,合并将使用字符串" null“。因此,这意味着如果您向单元格提供内容字符串"NULL“或具有null的单元格-在这两种情况下,coalesce函数都会输出字符串"NULL”-这意味着您只需检查单个条件。
coalesce在https://github.com/OpenRefine/OpenRefine/wiki/GREL%20Other%20Functions上有文档
https://stackoverflow.com/questions/63539703
复制相似问题