Python Cubes Olap 框架日期切入点

Posted

技术标签:

【中文标题】Python Cubes Olap 框架日期切入点【英文标题】:Python Cubes Olap Framework Date PointCut 【发布时间】:2014-09-26 11:48:15 【问题描述】:

所以我正在尝试使用 Python Cubes Framework 实现一些 BI,但遇到了一些问题。

基本上我正在尝试做一个“简单的”切入点/切片和骰子,但我没有任何运气。我正在使用带有 PostGis 的 PostgreSQL 数据库。

我的model.json 是:


    "dimensions": [
        "name": "user", "attributes": ["id", "username"],
        "name": "resources", "attributes": ["id", "resource_simple_name"],
        "name":"created_on", "role": "time"
    ],
    "cubes": [
        
            "name": "users_resources_likes",
            "dimensions": ["user", "resources", "created_on"],
            "mappings": 
                "user.id": "auth_user.id",
                "user.username": "auth_user.username",
                "resources.id": "resources.id",
                "resources.resource_simple_name": "resources.resource_simple_name",
                "created_on": "created_on"
            ,
            "joins": [
                
                    "master": "user_id",
                    "detail": "auth_user.id"
                ,
                
                    "master": "resource_id",
                    "detail": "resources.id"
                
            ]
        

    ]

如果我尝试在切片器上用日期切入

aggregate?drilldown=created_on&cut=created_on:2012

我收到了DataError: (DataError) invalid input syntax for type timestamp with time zone: "2012"

搜索了一段时间后,我读到可能是因为我的 postgresql 数据库有时间戳

created_on timestamp with time zone NOT NULL DEFAULT '2014-02-10 00:00:00+00'::timestamp with time zone,

所以我尝试这样做:

?drilldown=created_on&cut=created_on:2012-09-15T09:37:59+00:00

我得到一个:


error: "unknown_user_error",
message: "Wrong dimension cut string: 'created_on:2012-09-15T09:37:59 00:00'"

我做错了什么?是我的model.json 的问题吗?

【问题讨论】:

【参考方案1】:

我发现向模型中的日期添加更多信息解决了这个问题:

    
        "name": "created_on",
        "label": "Date Created",
        "role": "time",
        "info": 
            "cv-datefilter": true,
            "cv-datefilter-hierarchy": "weekly"
        ,
        "levels": [
               
                   "name":"year",
                   "label":"Year",
                   "info":  "cv-datefilter-field": "year" 
               ,
               
                   "name":"quarter",
                   "label":"Quarter"
               ,
               
                   "name":"month",
                   "label":"Month"
               ,
               
                   "name":"week",
                   "label":"Week",
                   "info":  "cv-datefilter-field": "week" 
               
           ],
        "hierarchies": [
            
                "name": "weekly",
                "label": "Weekly",
                "levels": [ "year", "week"]
            ,
            
                "name": "monthly",
                "label": "Monthly",
                "levels": [ "year", "quarter", "month"]

            
        ]
    

和映射:

        "mappings": 
            "created_on.year": "column":"created_on", "extract":"year",
            "created_on.month": "column":"created_on", "extract":"month",
            "created_on.week": "column":"created_on", "extract":"week",
            "created_on.day": "column":"created_on", "extract":"day",
            "created_on.quarter": "column":"created_on", "extract":"quarter"
        

【讨论】:

以上是关于Python Cubes Olap 框架日期切入点的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server OLAP CUBES(教程)[关闭]

用于 NodeJS 的 OLAP 服务器

如何表示 OLAP 4D 长方体?

如何使用 Python Cubes 获取二维的聚合值?

OLAP 多维数据集中的日期维度已停止处理

OLAP SSAS MDX 如何获取先前选定/可见日期的度量值