首页 > 解决方案 > 如何将限制过滤器应用于 cubeJs 的 timeDimension 属性?

问题描述

下面是我尝试使用 cubejs 应用限制为 2 的场景。这是对此的 json 查询:

{
    "measures": [
        "actors.actorscount"
    ],
    "timeDimensions": [
        {
            "dimension": "actors.createdAt",
            "granularity": "month",
            "dateRange": "Last quarter"
        }
    ],
    "dimensions": [
        "actors.genre"
    ],
    "filters": []
}

在此处输入图像描述

在将 limit=2 应用于以下查询后,我得到了条形图响应:

{
        "measures": [
            "actors.actorscount"
        ],
            "timeDimensions": [
                {
                    "dimension": "actors.createdAt",
                    "granularity": "month",
                    "dateRange": "Last quarter"
                }
            ],
                "dimensions": [
                    "actors.genre"
                ],
                    "filters": [],
                    "limit":2
    }

我得到的当前条形图为: 在此处输入图像描述

应用限制后期望条形图响应:

在此处输入图像描述

那么,应该怎么做才能得到正确的条形图响应呢?

标签: javascriptnode.jscube.js

解决方案


这样的结果可以通过两个步骤来实现:

首先获得没有时间粒度的前 2 个维度:

{
    "measures": [
        "actors.actorscount"
    ],
    "timeDimensions": [
        {
            "dimension": "actors.createdAt",
            "dateRange": "Last quarter"
        }
    ],
    "dimensions": [
        "actors.genre"
    ],
    "order": { "actors.actorscount": "desc" },
    "limit": 2
}

然后使用第一个查询结果中的两个顶级维度来获取所需的图表:

{
    "measures": [
        "actors.actorscount"
    ],
    "timeDimensions": [
        {
            "dimension": "actors.createdAt",
            "granularity": "month"
            "dateRange": "Last quarter"
        }
    ],
    "dimensions": [
        "actors.genre"
    ],
    "filters": [{
      "dimension": "actors.genre",
      "operator": "equals",
      "values": ["action", "comedy"]
    }]
}

推荐阅读