null になる可能性のあるフィールドに対してカスカログで外部結合を行うときに、デフォルト値を指定する最良の方法は何だろうと思っていました。
(def example-query
(<- [?id ?fname ?lname !days-active]
(users :> ?id ?fname ?lname)
(active :> ?fname ?lname !days-active))
この例では、users と active は以前に定義されたクエリであり、アクティブなユーザー情報 (?fname ?lname !days-active) と通常のユーザー情報 (?id ?fname ?lname) を関連付けようとしています。
そのため、!days-active に対応する情報がない場合に結合が発生すると、nil ではなく 0 が出力されます。
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 になるフィールドを null ではなく 0 に変更できます。複数のOr述語を使用すると機能しますか?