web-dev-qa-db-ja.com

CommCareルックアップテーブルで最も近い一致を見つけるにはどうすればよいですか?

CommCareのルックアップテーブルを使用して、特定の質問に最も近い(等しいまたはより小さい)値をルックアップすることは可能ですか?

例:
テーブルの値は5、6.35、42.8、136です。6を入力すると5が返され、6.35が6.35を返すようになり、48が42.8を返し、135が42.8を返します。

1
Jennifer

この効果を得るには、フィルターで<=maxと組み合わせて使用​​できると思います。

Xpathは次のようになります

max(instance('myentrys')/myentry_list/myentry[value <= target_value]/value)

これにより、target_value未満の最大値が得られます。必要なのが、その値を持つテーブル内の行全体である場合、その値でルックアップを実行できます。 target_valueより小さい最大値である値を持つ行を見つけます。

instance('myentrys')/myentry_list/myentry/value[value =
    max(instance('myentrys')/myentry_list/myentry[value <= target_value]/value)]
3
Danny Roberts