Commit 4a9b29d37e052b9c33c9b79f682a3a21efd52434

Authored by Edmar Moretti
1 parent 2b4665d1

--no commit message

Showing 2 changed files with 46 additions and 19 deletions   Show diff stats
admin/admin.db
No preview for this file type
ferramentas/saiku/esquemaxml.php
... ... @@ -16,12 +16,19 @@ exit;
16 16  
17 17 //cria as dimensoes de tipo temporal
18 18 $sqlAno = "select nu_ano from i3geo_metaestat.dim_tempo group by nu_ano order by nu_ano";
  19 +$sqlMes = "select nu_ano,nu_mes,ds_mes_abreviado as mes,nu_ano::text||'-'||nu_mes::text as nu_anomes from i3geo_metaestat.dim_tempo group by nu_ano,nu_mes,mes,nu_anomes order by nu_ano,nu_mes";
19 20 $xml .= "
20   - <Dimension name='Anual' type='TimeDimension' caption='Tempo: ano'>
  21 + <Dimension name='Anual' type='TimeDimension' caption='Tempo: Anual'>
21 22 <Hierarchy hasAll='true' primaryKey='nu_ano'>
22 23 <view alias='tempo_ano' ><SQL dialect='generic' >$sqlAno</SQL></view>
23   - <Level name='Ano' column='nu_ano' type='Numeric' uniqueMembers='true'
24   - levelType='TimeYears'/>
  24 + <Level name='Ano' column='nu_ano' type='Numeric' uniqueMembers='true' levelType='TimeYears'/>
  25 + </Hierarchy>
  26 + </Dimension>
  27 + <Dimension name='Mensal' type='TimeDimension' caption='Tempo: Mensal'>
  28 + <Hierarchy hasAll='true' primaryKey='nu_anomes'>
  29 + <view alias='tempo_ano' ><SQL dialect='generic' >$sqlMes</SQL></view>
  30 + <Level name='Ano' column='nu_ano' type='Numeric' uniqueMembers='true' levelType='TimeYears'/>
  31 + <Level nameColumn='mes' name='Mes' column='nu_mes' type='Numeric' uniqueMembers='false' levelType='TimeMonths'/>
25 32 </Hierarchy>
26 33 </Dimension>
27 34 ";
... ... @@ -62,17 +69,17 @@ foreach($regioes as $regiao){
62 69 $tabelaAnt = "j".$i;
63 70 $niveis[] = "
64 71 <Level name='".converte($r["nome_tipo_regiao"])."'
65   - column='j$i{$r['identificador']}'
  72 + column='j$i{$r['identificador']}'
66 73 nameColumn='j$i{$r["colunanomeregiao"]}' uniqueMembers='false'/>
67 74 ";
68 75  
69 76 }
70 77 $niveis[] = "
71 78 <Level name='".converte($regiao["nome_tipo_regiao"])."'
72   - column='codigo'
  79 + column='codigo'
73 80 nameColumn='nome' uniqueMembers='true'>
74 81 ";
75   -
  82 +
76 83 //verifica outras colunas
77 84 $vis = $regiao['colunasvisiveis'];
78 85 if($vis != ""){
... ... @@ -111,7 +118,7 @@ foreach($regioes as $regiao){
111 118 <Property name='{$apelidos[$i]}' column='{$vis[$i]}'/>
112 119 ";
113 120 }
114   - }
  121 + }
115 122 //fecha os elementos. LEVEL deve ser fechado pois o ultimo recebe as propriedades
116 123 $xml .= "
117 124 </Level>
... ... @@ -143,28 +150,48 @@ foreach($tbs as $tb){
143 150 $VirtualCubeDimension[] = "
144 151 <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' />
145 152 ";
146   - $xml .= "
147   - <Cube name='{$c["esquemadb"]}{$c["tabela"]}'>";
148   - $xml .= "
149   - <Table name='".$c["tabela"]."' schema='".$c["esquemadb"]."' />
150   - <DimensionUsage foreignKey='".$c["colunaidgeo"]."' name='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."' source='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."'/>
151   - ";
152 153 //verifica as dimensoes do tipo tempo
153 154 $dimTempo = array();
154 155 foreach($tb as $medida){
155 156 $parametros = $m->listaParametro($medida["id_medida_variavel"],"","",$apenasTempo=true,$ordenaPeloPai=false);
  157 + $parComposto = array(); //guarda a composicao da chave que liga com a dimensao
156 158 foreach($parametros as $parametro){
157 159 if($parametro["tipo"] == 1){
158   - $VirtualCubeDimension[] = "
159   - <VirtualCubeDimension name='Anual' />
160   - ";
161   - $dimTempo[] = "
162   - <DimensionUsage foreignKey='".$parametro["coluna"]."' name='Anual_{$c["esquemadb"]}{$c["tabela"]}' source='Anual'/>
163   - ";
  160 + if(count($parametros) == 1){
  161 + $VirtualCubeDimension[] = "
  162 + <VirtualCubeDimension name='Anual' />
  163 + ";
  164 + $dimTempo[] = "
  165 + <DimensionUsage foreignKey='".$parametro["coluna"]."' name='Anual' source='Anual'/>
  166 + ";
  167 + }
  168 + $parComposto[] = $parametro["coluna"];
  169 + }
  170 + if($parametro["tipo"] == 2){
  171 + $parComposto[] = $parametro["coluna"];
  172 + if(count($parametros) == 2){
  173 + $VirtualCubeDimension[] = "
  174 + <VirtualCubeDimension name='Mensal' />
  175 + ";
  176 + $dimTempo[] = "
  177 + <DimensionUsage foreignKey='".implode("_",$parComposto)."' name='Mensal' source='Mensal'/>
  178 + ";
  179 + }
164 180 }
165 181 }
166 182 //echo "<pre>";var_dump($parametro);exit;
167 183 }
  184 + $xml .= "
  185 + <Cube name='{$c["esquemadb"]}{$c["tabela"]}'>";
  186 + $sql = "select * from {$c["esquemadb"]}.{$c["tabela"]}";
  187 + if(count($parComposto) > 0){
  188 + $sql = "select *,".implode("||'-'||",$parComposto)." as ".implode("_",$parComposto)." from {$c["esquemadb"]}.{$c["tabela"]}";
  189 + }
  190 + $xml .= "
  191 + <view alias='view_{$c["esquemadb"]}{$c["tabela"]}' ><SQL dialect='generic' >$sql</SQL></view>
  192 + <DimensionUsage foreignKey='".$c["colunaidgeo"]."' name='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."' source='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."'/>
  193 + ";
  194 +
168 195 $xml .= implode(" ",array_unique($dimTempo));
169 196  
170 197 //inclui cada elemento em medida
... ...