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,12 +16,19 @@ exit;
16 16
17 //cria as dimensoes de tipo temporal 17 //cria as dimensoes de tipo temporal
18 $sqlAno = "select nu_ano from i3geo_metaestat.dim_tempo group by nu_ano order by nu_ano"; 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 $xml .= " 20 $xml .= "
20 - <Dimension name='Anual' type='TimeDimension' caption='Tempo: ano'> 21 + <Dimension name='Anual' type='TimeDimension' caption='Tempo: Anual'>
21 <Hierarchy hasAll='true' primaryKey='nu_ano'> 22 <Hierarchy hasAll='true' primaryKey='nu_ano'>
22 <view alias='tempo_ano' ><SQL dialect='generic' >$sqlAno</SQL></view> 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 </Hierarchy> 32 </Hierarchy>
26 </Dimension> 33 </Dimension>
27 "; 34 ";
@@ -62,17 +69,17 @@ foreach($regioes as $regiao){ @@ -62,17 +69,17 @@ foreach($regioes as $regiao){
62 $tabelaAnt = "j".$i; 69 $tabelaAnt = "j".$i;
63 $niveis[] = " 70 $niveis[] = "
64 <Level name='".converte($r["nome_tipo_regiao"])."' 71 <Level name='".converte($r["nome_tipo_regiao"])."'
65 - column='j$i{$r['identificador']}' 72 + column='j$i{$r['identificador']}'
66 nameColumn='j$i{$r["colunanomeregiao"]}' uniqueMembers='false'/> 73 nameColumn='j$i{$r["colunanomeregiao"]}' uniqueMembers='false'/>
67 "; 74 ";
68 75
69 } 76 }
70 $niveis[] = " 77 $niveis[] = "
71 <Level name='".converte($regiao["nome_tipo_regiao"])."' 78 <Level name='".converte($regiao["nome_tipo_regiao"])."'
72 - column='codigo' 79 + column='codigo'
73 nameColumn='nome' uniqueMembers='true'> 80 nameColumn='nome' uniqueMembers='true'>
74 "; 81 ";
75 - 82 +
76 //verifica outras colunas 83 //verifica outras colunas
77 $vis = $regiao['colunasvisiveis']; 84 $vis = $regiao['colunasvisiveis'];
78 if($vis != ""){ 85 if($vis != ""){
@@ -111,7 +118,7 @@ foreach($regioes as $regiao){ @@ -111,7 +118,7 @@ foreach($regioes as $regiao){
111 <Property name='{$apelidos[$i]}' column='{$vis[$i]}'/> 118 <Property name='{$apelidos[$i]}' column='{$vis[$i]}'/>
112 "; 119 ";
113 } 120 }
114 - } 121 + }
115 //fecha os elementos. LEVEL deve ser fechado pois o ultimo recebe as propriedades 122 //fecha os elementos. LEVEL deve ser fechado pois o ultimo recebe as propriedades
116 $xml .= " 123 $xml .= "
117 </Level> 124 </Level>
@@ -143,28 +150,48 @@ foreach($tbs as $tb){ @@ -143,28 +150,48 @@ foreach($tbs as $tb){
143 $VirtualCubeDimension[] = " 150 $VirtualCubeDimension[] = "
144 <VirtualCubeDimension name='codigo_tipo_regiao_{$c["codigo_tipo_regiao"]}' /> 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 //verifica as dimensoes do tipo tempo 153 //verifica as dimensoes do tipo tempo
153 $dimTempo = array(); 154 $dimTempo = array();
154 foreach($tb as $medida){ 155 foreach($tb as $medida){
155 $parametros = $m->listaParametro($medida["id_medida_variavel"],"","",$apenasTempo=true,$ordenaPeloPai=false); 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 foreach($parametros as $parametro){ 158 foreach($parametros as $parametro){
157 if($parametro["tipo"] == 1){ 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 //echo "<pre>";var_dump($parametro);exit; 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 $xml .= implode(" ",array_unique($dimTempo)); 195 $xml .= implode(" ",array_unique($dimTempo));
169 196
170 //inclui cada elemento em medida 197 //inclui cada elemento em medida