3 package OpenILS::WWW::Reporter;
5 our $dtype_xform_map = {
6 'int' => [ 'avg','stddev','sum','count','count_dist','numformat'],
7 'numeric' => [ 'avg','stddev','sum','count','count_dist','numformat'],
8 'float' => [ 'avg','stddev','sum','count','count_dist','numformat'],
9 'time' => [ 'count', 'dateformat'],
10 'date' => [ 'count', 'age','dateformat'],
11 'timestamp' => [ 'count', 'age','dateformat'],
12 'timestamptz' => [ 'count', 'age','dateformat'],
13 'text' => [ 'count','count_dist','lower','upper','substr'],
14 'call_number' => [ 'count','count_dist','dewy','dewy_prefix','count_dist_dewey','count_dist_dewey_prefix','lower','upper','substr'],
21 'name' => 'Average per group',
22 'select' => 'AVG(?COLNAME?)',
25 'label' => 'Standard Deviation per group',
26 'select' => 'STDDEV(?COLNAME?)',
29 'label' => 'Sum per group',
30 'select' => 'SUM(?COLNAME?)',
33 'label' => 'Count per group',
34 'select' => 'COUNT(?COLNAME?)',
37 'label' => 'Distinct Count per group',
38 'select' => 'COUNT(DISTINCT ?COLNAME?)',
40 'count_dist_dewey' => {
41 'label' => 'Distinct Count of Dewey numbers per group',
42 'select' => 'COUNT(DISTINCT call_number_dewey(?COLNAME?))',
44 'count_dist_dewey_prefix'=> {
45 'label' => 'Distinct Count of Dewey Number Prefixes per group',
46 'select' => 'COUNT(DISTINCT call_number_dewey(?COLNAME?,?PARAM?))',
50 'label' => 'Extract Dewey number prefix from call number',
51 'select' => 'call_number_dewey(?COLNAME?,?PARAM?)',
55 'label' => 'Extract Dewey number from call number',
56 'select' => 'call_number_dewey(?COLNAME?)',
59 'label' => 'Transform string to lower case',
60 'select' => 'evergreen.lowercase(?COLNAME?)',
63 'label' => 'Transform string to upper case',
64 'select' => 'UPPER(?COLNAME?)',
67 'label' => 'Trim string length',
68 'select' => 'substr(?COLNAME?,1,?PARAM?)',
72 'label' => 'Age as of runtime -- day granularity',
73 'select' => 'AGE(?COLNAME?::DATE)',
75 'dateformat' => { # see http://www.postgresql.org/docs/8.0/interactive/functions-formatting.html
76 'label' => 'Format date and time',
77 'select' => "TO_CHAR(?COLNAME?,'?PARAM?')",
80 'numformat' => { # see http://www.postgresql.org/docs/8.0/interactive/functions-formatting.html
81 'label' => 'Format Numeric data',
82 'select' => "TO_CHAR(?COLNAME?,'?PARAM?')",