【问题标题】:Cube.js time series excluding weekendsCube.js 时间序列,不包括周末
【发布时间】:2019-11-08 02:36:08
【问题描述】:

我正在使用 mongo db BI 连接器并尝试使用 cube.js 呈现日期系列图表。有没有办法应用日期范围的时间维度并仅考虑工作日? 下面是我的示例多维数据集架构和集合

cube(`Entries`, {
    sql: `SELECT * FROM db.entries`,    
    measures: {
      count: {
        type: `count`
      }
    },

    dimensions: {
      result: {
        sql: `result`,
        type: `string`
      },

      date: {
        sql: `date`,
        type: `time`
      },
    },
  });

查询:

{
     "measures": [
       "Entries.count"
      ],
      "timeDimensions": [
         {
            "dimension": "Entries.date",
            "granularity": "day"
         }
      ]
}

【问题讨论】:

    标签: cube.js


    【解决方案1】:

    你可以通过引入weekdays段来做到这一点:

    cube(`Entries`, {
      sql: `SELECT * FROM db.entries`,    
      measures: {
        count: {
          type: `count`
        }
      },
    
      dimensions: {
        result: {
          sql: `result`,
          type: `string`
        },
    
        date: {
          sql: `date`,
          type: `time`
        },
      },
    
      segments: {
        weekdays: {
          sql: `DAYOFWEEK(${date}) <> 1 AND DAYOFWEEK(${date}) <> 7`
        }
      }
    });
    

    并在查询中使用它:

    {
       "measures": [
         "Entries.count"
       ],
       "timeDimensions": [
           {
              "dimension": "Entries.date",
              "granularity": "day"
           }
       ],
       "segments": ["Entries.weekdays"]
    }
    

    要隐藏零周末值,请在准备数据时传递 fillMissingDates: false

    resultSet.chartPivot({ fillMissingDates: false })
    

    更多关于细分的信息:https://cube.dev/docs/segments

    【讨论】:

    • 是的。我能想象的唯一方法是通过resultSet.pivot({ fillMissingDates: false }) 并实施仅尊重工作日的自定义缺失日期填充。
    • 感谢您的回复。是的,现在它只考虑结果集中的工作日条目。但是如何告诉结果集对象的 chartPivot() 方法考虑相同的分段时间序列?将像 resultSet.pivot({'fillMissingDates' : false}) 这样的 pivotConfig 对象传递给 pivotChart() 会排除我的收藏中没有条目的所有日子,相反,我只想排除周末和下雪 0 以防错过营业日期.感谢您的帮助!
    • 是的。这是正确的。我现在看到的唯一方法是自定义缺少日期填充实现。
    • 那不需要对来自 cube.js API 的每个查询结果集调用自定义包装器吗?我们可以通过添加一个单独的时间维度集合并以某种方式基于它绘制时间序列而不需要填充来在模式层处理它。请建议是否可以使用 cube.js 或更好的方法来处理问题
    • 自定义缺失日期填充实现应在客户端完成。您可以尝试在架构级别上执行此操作,但这样做要困难得多。您可以尝试覆盖ResultSet.timeSeries() 方法。我将是我认为最简单的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    相关资源
    最近更新 更多