summaryrefslogtreecommitdiffstats
path: root/tests/test_bijoe_schemas.py
blob: 9b426d5ab3950dd954a928138272d98881429f1f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# -*- coding: utf-8 -*-
from bijoe.schemas import Warehouse


def test_simple_parsing():
    Warehouse.from_json({
        'name': 'coin',
        'label': 'coin',
        'pg_dsn': 'dbname=zozo',
        'search_path': ['cam', 'public'],
        'cubes': [
            {
                'name': 'all_formdata',
                'label': 'Tous les formulaires',
                'fact_table': 'formdata',
                'key': 'id',
                'joins': [
                    {
                        'name': 'formdef',
                        'master': '{fact_table}.formdef_id',
                        'table': 'formdef',
                        'detail': 'formdef.id',
                    }
                ],
                'dimensions': [
                    {
                        'label': 'formulaire',
                        'name': 'formdef',
                        'type': 'integer',
                        'join': ['formdef'],
                        'value': 'formdef.id',
                        'value_label': 'formdef.label',
                        'order_by': 'formdef.label'
                    },
                    {
                        'name': 'receipt_time',
                        'label': 'date de soumission',
                        'join': ['receipt_time'],
                        'type': 'date',
                        'value': 'receipt_time.date'
                    }
                ],
                'measures': [
                    {
                        'type': 'integer',
                        'label': 'Nombre de demandes',
                        'expression': 'count({fact_table}.id)',
                        'name': 'count'
                    },
                    {
                        'type': 'integer',
                        'label': u'Délai de traitement',
                        'expression': 'avg((to_char(endpoint_delay, \'9999.999\') || \' days\')::interval)',
                        'name': 'avg_endpoint_delay'
                    },
                    {
                        'type': 'percent',
                        'label': 'Pourcentage',
                        'expression': 'count({fact_table}.id) * 100. / (select count({fact_table}.id) from {table_expression} where {where_conditions})',
                        'name': 'percentage'
                    }
                ]
            }
        ],
    })