Commit 4a9b29d37e052b9c33c9b79f682a3a21efd52434
1 parent
2b4665d1
Exists in
master
and in
7 other branches
--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 |