Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xquery 在日期的MarkLogic中设置动态带扣约束_Xquery_Marklogic - Fatal编程技术网

Xquery 在日期的MarkLogic中设置动态带扣约束

Xquery 在日期的MarkLogic中设置动态带扣约束,xquery,marklogic,Xquery,Marklogic,在我的数据库中,我有一个包含xs:dates的路径范围索引 <date>2019-01-01</date> 我的问题是,我想动态地更新bucket,将当前年份计算为季度bucket,接下来的几年都是这样。我有一个当前带扣范围约束: <constraint name="date"> <range type="xs:date" facet="true"> <path-index>/data/date</pat

在我的数据库中,我有一个包含xs:dates的路径范围索引

<date>2019-01-01</date>
我的问题是,我想动态地更新bucket,将当前年份计算为季度bucket,接下来的几年都是这样。我有一个当前带扣范围约束:

<constraint name="date">
    <range type="xs:date" facet="true">
        <path-index>/data/date</path-index>
        <bucket ge="2019-01-01" lt="2019-03-01" name="q1">2019 Q1</bucket>
        <bucket ge="2019-04-01" lt="2019-06-01" name="q2">2019 Q2</bucket>
        <bucket ge="2019-07-01" lt="2019-09-01" name="q3">2019 Q3</bucket>
        <bucket ge="2019-10-01" lt="2019-12-01" name="q4">2019 Q4</bucket>
        <bucket ge="2018-01-01" lt="2019-01-01" name="2018">2018</bucket>
        <bucket ge="2017-01-01" lt="2018-01-01" name="2017">2017</bucket>
        <bucket ge="2016-01-01" lt="2017-01-01" name="2016">2016</bucket>
        <bucket ge="2015-01-01" lt="2016-01-01" name="2015">2015</bucket>
    </range>
</constraint>

上面提到的问题是,它手动将2019年分为几个季度,但当2020年及以后的几年,我如何才能让存储桶自动更新并只将当前年份分为几个季度呢?

计算的存储桶能满足要求吗?见:


希望这能有所帮助,

我想我会使用自定义约束。你看过这个部分了吗?
<constraint name="date">
    <range type="xs:date" facet="true">
        <path-index>/data/date</path-index>
        <bucket ge="2019-01-01" lt="2019-03-01" name="q1">2019 Q1</bucket>
        <bucket ge="2019-04-01" lt="2019-06-01" name="q2">2019 Q2</bucket>
        <bucket ge="2019-07-01" lt="2019-09-01" name="q3">2019 Q3</bucket>
        <bucket ge="2019-10-01" lt="2019-12-01" name="q4">2019 Q4</bucket>
        <bucket ge="2018-01-01" lt="2019-01-01" name="2018">2018</bucket>
        <bucket ge="2017-01-01" lt="2018-01-01" name="2017">2017</bucket>
        <bucket ge="2016-01-01" lt="2017-01-01" name="2016">2016</bucket>
        <bucket ge="2015-01-01" lt="2016-01-01" name="2015">2015</bucket>
    </range>
</constraint>