我想知道在 cascalog 中为可能为空的字段执行外连接时指定默认值的最佳方法是什么。
(def example-query
(<- [?id ?fname ?lname !days-active]
(users :> ?id ?fname ?lname)
(active :> ?fname ?lname !days-active))
在此示例中,用户和活动将是先前定义的查询,我只是希望关联活动用户信息 (?fname ?lname !days-active) 和常规用户信息 (?id ?fname ?lname)
因此,当连接发生时,如果没有 !days-active 的相应信息,它将输出 0 而不是 nil 即
392393 john smith 3
003030 jane doe 0
代替
392393 john smith 3
003030 jane doe null
更新示例
(<- [!!database-id ?feature !!user-clicks !!engaged-users ?application-id ?active-users]
(app-id-db-id-feature-clicks-engaged :> ?application-id !!database-id ?feature !!user-clicks !!engaged-users )
(user-info :> ?application-id ?feature ?active-users))]
示例输出看起来大致像
4234 search null null 222 5000
3232 profile 500 400 331 6000
通过我感兴趣的过滤,我可以将 !!engaged-users 和 !!user-clicks 的字段更改为 0 而不是 null。使用多个Or谓词会起作用吗?