Commit 55a06a0e7a2247773d590b4c48d5c1c20096572c
1 parent
a24ca97d
Exists in
master
and in
7 other branches
Correção na inclusão de parâmetros no sistema de metadados estatísticos e acesso via SAIKU
Showing
3 changed files
with
66 additions
and
36 deletions
Show diff stats
admin/admin.db
No preview for this file type
admin/php/classe_metaestat.php
... | ... | @@ -1940,7 +1940,7 @@ class Metaestat{ |
1940 | 1940 | $sql .= "AND i3geoestat_parametro_medida.id_parametro_medida = $id_parametro_medida "; |
1941 | 1941 | } |
1942 | 1942 | } |
1943 | - else{ | |
1943 | + elseif ($id_parametro_medida != ""){ | |
1944 | 1944 | $sql .= "WHERE i3geoestat_parametro_medida.id_parametro_medida = $id_parametro_medida "; |
1945 | 1945 | } |
1946 | 1946 | if($id_pai != ""){ |
... | ... | @@ -1956,6 +1956,17 @@ class Metaestat{ |
1956 | 1956 | //echo $sql;exit; |
1957 | 1957 | return $this->execSQL($sql,$id_parametro_medida); |
1958 | 1958 | } |
1959 | + /** | |
1960 | + * Lista todos os parametros cadastrados | |
1961 | + */ | |
1962 | + function listaTodosParametros(){ | |
1963 | + $sql = "SELECT i3geoestat_parametro_medida.*,i3geoestat_medida_variavel.* "; | |
1964 | + $sql .= "FROM ".$this->esquemaadmin."i3geoestat_parametro_medida "; | |
1965 | + $sql .= "INNER JOIN ".$this->esquemaadmin."i3geoestat_medida_variavel "; | |
1966 | + $sql .= "ON i3geoestat_parametro_medida.id_medida_variavel = i3geoestat_medida_variavel.id_medida_variavel "; | |
1967 | + $sql .= " ORDER BY nome"; | |
1968 | + return $this->execSQL($sql); | |
1969 | + } | |
1959 | 1970 | /** |
1960 | 1971 | * Lista os valores (unicos) que ocorrem em um parametro de uma medida de variavel |
1961 | 1972 | * @param id do parametro | ... | ... |
ferramentas/saiku/esquemaxml.php
1 | 1 | <?php |
2 | +//utilize output=xml para debug | |
2 | 3 | //quando o saiku e iniciado de fora do i3geo, e necessario inicializar um mapfile para uso como base dos mapas |
3 | 4 | if(empty($_GET["g_sid"])){ |
4 | 5 | include(dirname(__FILE__)."/../../ms_criamapa.php"); |
5 | 6 | //reinicia a url |
6 | - $urln = "?g_sid=".session_id()."&locaplic=".$_GET["locaplic"]."&mapext=".$mapext."&origem=".$_GET["origem"]; | |
7 | + $urln = "?g_sid=".session_id()."&locaplic=".$_GET["locaplic"]."&mapext=".$mapext."&origem=".$_GET["origem"]."&output=".$_GET["output"]; | |
7 | 8 | header("Location:".$urln); |
8 | 9 | exit; |
9 | 10 | } |
... | ... | @@ -126,6 +127,7 @@ if(empty($saikuConfigDataSource['tabelaDimensaoTempo'])){ |
126 | 127 | } |
127 | 128 | $sqlAno = "select nu_ano from ".$saikuConfigDataSource['tabelaDimensaoTempo']." group by nu_ano order by nu_ano"; |
128 | 129 | $sqlMes = "select nu_ano::text,nu_mes::text,ds_mes_abreviado as mes,COALESCE (nu_ano::text||'-'||nu_mes::text,nu_ano::text) as nu_anomes from ".$saikuConfigDataSource['tabelaDimensaoTempo']." group by nu_ano,nu_mes,mes,nu_anomes order by nu_ano,nu_mes"; |
130 | +//dimensoes temporais | |
129 | 131 | $xml .= " |
130 | 132 | <Dimension name='Anual' type='TimeDimension' caption='Tempo: Anual'> |
131 | 133 | <Hierarchy hasAll='true' primaryKey='nu_ano'> |
... | ... | @@ -148,6 +150,7 @@ $xml .= " |
148 | 150 | </Hierarchy> |
149 | 151 | </Dimension> |
150 | 152 | "; |
153 | +//dimensoes geograficas | |
151 | 154 | //as dimensoes sao duplicadas |
152 | 155 | //uma delas contem o geocodigo que permite a geracao do mapa |
153 | 156 | $xml1 = ""; |
... | ... | @@ -232,28 +235,6 @@ foreach($regioes as $regiao){ |
232 | 235 | "; |
233 | 236 | $xml1 .= implode(" ",$niveis1); |
234 | 237 | $xml2 .= implode(" ",$niveis2); |
235 | - /* | |
236 | - //verifica se existem propriedades (colunas adicionais) | |
237 | - if($vis != ""){ | |
238 | - //apelidos | |
239 | - $apelidos = $regiao['apelidos']; | |
240 | - if($apelidos != ""){ | |
241 | - $apelidos = str_replace(";",",",$apelidos); | |
242 | - $apelidos = str_replace(",,",",",$apelidos); | |
243 | - $apelidos = converte($apelidos); | |
244 | - $apelidos = explode(",",$apelidos); | |
245 | - } | |
246 | - else{ | |
247 | - $apelidos = $vis; | |
248 | - } | |
249 | - $nvis = count($vis); | |
250 | - for($i = 0; $i < $nvis; $i++){ | |
251 | - $xml .= " | |
252 | - <Property name='{$apelidos[$i]}' column='{$vis[$i]}'/> | |
253 | - "; | |
254 | - } | |
255 | - } | |
256 | - */ | |
257 | 238 | $xml1 .= " |
258 | 239 | </Hierarchy> |
259 | 240 | </Dimension> |
... | ... | @@ -263,7 +244,41 @@ foreach($regioes as $regiao){ |
263 | 244 | </Dimension> |
264 | 245 | "; |
265 | 246 | } |
266 | -$xml .= $xml1.$xml2; | |
247 | +//outras dimensoes definidas nos parametros e que nao sejam do tipo tempo | |
248 | +$parametros = $m->listaTodosParametros(); | |
249 | +$dimOutras = array(); | |
250 | +foreach($parametros as $p){ | |
251 | + //apenas as nao tempo | |
252 | + if($p["tipo"] < 1 || $p["tipo"] > 5){ | |
253 | + $k = $p["esquema"]."_".$p["tabela"]."_".$p["coluna"]; | |
254 | + if(empty($tbs[$k])){ | |
255 | + $dimOutras[$k] = $p; | |
256 | + } | |
257 | + else{ | |
258 | + array_push($dimOutras[$k],$p); | |
259 | + } | |
260 | + } | |
261 | +} | |
262 | +$xml3 = ""; | |
263 | +foreach($dimOutras as $d){ | |
264 | + $k = $p["esquemadb"]."_".$d["tabela"]."_".$d["coluna"]; | |
265 | + $xml3 .= " | |
266 | + <Dimension name='".$k."' caption='".converte($d["nome"])."'> | |
267 | + <Hierarchy hasAll='true' primaryKey='{$d["coluna"]}'> | |
268 | + "; | |
269 | + //cria uma view juntando as tabelas da hierarquia de regioes | |
270 | + $colunas = "dim.{$d['coluna']}, "; | |
271 | + $colunas .= "dim.{$d['coluna']} AS nome"; | |
272 | + $sql = "SELECT {$colunas} FROM ".$d['esquemadb'].".".$d['tabela']." as dim group by ".$d['coluna']; | |
273 | + $xml3 .= "<view alias='".$k."' ><SQL dialect='generic' >$sql</SQL></view>"; | |
274 | + $xml3 .= "<Level name='".converte($d["nome"])."' | |
275 | + column='{$d['coluna']}' | |
276 | + nameColumn='nome' uniqueMembers='true' /> | |
277 | + "; | |
278 | + $xml3 .= "</Hierarchy> | |
279 | + </Dimension>"; | |
280 | +} | |
281 | +$xml .= $xml1.$xml2.$xml3; | |
267 | 282 | //junta as medidas conforme o nome da tabela utilizada |
268 | 283 | $medidas = $m->listaMedidaVariavel(); |
269 | 284 | //var_dump($medidas);exit; |
... | ... | @@ -300,7 +315,7 @@ foreach($tbs as $tb){ |
300 | 315 | foreach($tb as $medida){ |
301 | 316 | //echo "<pre>";var_dump($medida)."<br>"; |
302 | 317 | $parametros = $m->listaParametro($medida["id_medida_variavel"],"","",false,false); |
303 | - | |
318 | + | |
304 | 319 | $parComposto = array(); //guarda a composicao da chave que liga com a dimensao |
305 | 320 | $colunaAdicionais = array(); |
306 | 321 | //parametro do tipo tempo |
... | ... | @@ -320,31 +335,32 @@ foreach($tbs as $tb){ |
320 | 335 | //outros parametros |
321 | 336 | $outrosParametros = array(); |
322 | 337 | //TODO criar as dimensoes aqui |
338 | + //echo "<pre>";var_dump($parametros); | |
323 | 339 | foreach($parametros as $parametro){ |
340 | + $k = $parametro["esquemadb"]."_".$parametro["tabela"]."_".$parametro["coluna"]; | |
324 | 341 | if($parametro["tipo"] > 5 || $parametro["tipo"] == 0){ |
325 | - //$outrosParametros[] = $parametro["coluna"]; | |
326 | - //$VirtualCubeDimension[] = "<VirtualCubeDimension name='{$parametro["coluna"]}' />"; | |
327 | - //$dimEnsoes[] = "<DimensionUsage foreignKey='{$parametro["coluna"]}_' name='{$parametro["coluna"]}' source='{$parametro["coluna"]}'/>"; | |
342 | + $outrosParametros[] = $k; | |
343 | + $VirtualCubeDimension[] = "<VirtualCubeDimension name='{$k}' />"; | |
344 | + $dimEnsoes[] = "<DimensionUsage foreignKey='{$parametro["coluna"]}' name='nome' source='{$k}'/>"; | |
328 | 345 | } |
329 | 346 | } |
330 | 347 | } |
331 | - //exit; | |
332 | 348 | $xml .= " |
333 | 349 | <Cube cache='false' name='{$c["esquemadb"]}{$c["tabela"]}'>"; |
334 | 350 | $incluirChaves = array("*"); |
335 | - | |
351 | + | |
336 | 352 | if(count($parComposto) > 0){ |
337 | 353 | //$sql = "select *,".implode("||'-'||",$parComposto)."::text as ".implode("_",$parComposto)."_ from {$c["esquemadb"]}.{$c["tabela"]}"; |
338 | 354 | $incluirChaves[] = implode("||'-'||",$parComposto)."::text as ".implode("_",$parComposto)."_"; |
339 | 355 | } |
340 | 356 | if(count($outrosParametros) > 0){ |
341 | 357 | foreach($outrosParametros as $o){ |
342 | - $incluirChaves[] = $o."::text as ".$o."_"; | |
358 | + //$incluirChaves[] = $o."::text as ".$o."_"; | |
343 | 359 | } |
344 | 360 | } |
345 | - | |
361 | + | |
346 | 362 | $sql = "select ".implode(",",$incluirChaves)." from {$c["esquemadb"]}.{$c["tabela"]}"; |
347 | - | |
363 | + | |
348 | 364 | $xml .= " |
349 | 365 | <view alias='view_{$c["esquemadb"]}{$c["tabela"]}' ><SQL dialect='generic' >$sql</SQL></view> |
350 | 366 | <DimensionUsage foreignKey='".$c["colunaidgeo"]."' name='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."' source='codigo_tipo_regiao_".$c["codigo_tipo_regiao"]."'/> |
... | ... | @@ -373,7 +389,6 @@ foreach($tbs as $tb){ |
373 | 389 | </Cube> |
374 | 390 | "; |
375 | 391 | } |
376 | - | |
377 | 392 | $xml .= '<VirtualCube name="Todas as medidas" >'; |
378 | 393 | $VirtualCubeDimension = array_unique($VirtualCubeDimension); |
379 | 394 | $VirtualCubeMeasure = array_unique($VirtualCubeMeasure); |
... | ... | @@ -383,7 +398,11 @@ $xml .= '</VirtualCube>'; |
383 | 398 | $xml .= "</Schema>"; |
384 | 399 | error_reporting(0); |
385 | 400 | ob_end_clean(); |
386 | -//echo $xml;exit; | |
401 | + | |
402 | +if($_GET["output"] == "xml"){ | |
403 | + echo header("Content-type: application/xml"); | |
404 | + echo $xml;exit; | |
405 | +} | |
387 | 406 | gravaDados(array($xml),$arquivoXmlEsquema); |
388 | 407 | |
389 | 408 | header("Location:".$saikuUrl."/?nomeConexao=".$nomeConexao."&locaplic=".$_GET["locaplic"]."&g_sid=".$_GET["g_sid"]."&mapext=".$_GET["mapext"]."&origem=".$_GET["origem"]); | ... | ... |