";
+/*
+echo "";
foreach($regioes as $regiao){
+ echo $regiao["codigo_tipo_regiao"]."
";
$caminho = $m->hierarquiaPath($regiao["codigo_tipo_regiao"]);
+ var_dump($caminho);
+}
+exit;
+*/
+foreach($regioes as $regiao){
+ $caminho = $m->hierarquiaPath($regiao["codigo_tipo_regiao"]);
+
//
//verifica se a regiao tem hierarquia
if(empty($caminho)){
$xml .= "
-
+
@@ -20,73 +30,141 @@ foreach($regioes as $regiao){
}
else{
$xml .= "
-
-
+
+
";
//cria uma view juntando as tabelas da hierarquia de regioes
$n = count($caminho);
- $r = $m->listaTipoRegiao($caminho[0]);
$colunas = array();
- $sql = "SELECT __COLUNAS__ FROM {$r['esquemadb']}.{$r['tabela']} AS regiao ";
- $colunas[] = "regiao.".$r['identificador'];
- $colunas[] = "regiao.".$r['colunanomeregiao'];
+ $niveis = array();
+ $sql = "SELECT __COLUNAS__ FROM {$regiao['esquemadb']}.{$regiao['tabela']} AS regiao ";
+ $colunas[] = "regiao.{$regiao['identificador']} AS codigo ";
+ $colunas[] = "regiao.{$regiao['colunanomeregiao']} AS nome";
$tabelaAnt = "regiao";
- if($n > 1){
- for($i=1;$i<$n;$i++){
- $r = $m->listaTipoRegiao($caminho[$i]);
- $colunas[] = "j".$i.".".$r['colunanomeregiao'];
- $colunas[] = "j".$i.".".$r['identificador'];
- $sql .= "INNER JOIN {$r['esquemadb']}.{$r['tabela']}
- AS j$i ON j$i.{$r['identificador']}::text = {$tabelaAnt}.{$r['identificador']}::text
- ";
- $tabelaAnt = "j".$i;
+ for($i=0;$i<$n;$i++){
+ $r = $m->listaTipoRegiao($caminho[$i]);
+ $colunas[] = "j$i.{$r['colunanomeregiao']} AS j$i{$r['colunanomeregiao']}";
+ $colunas[] = "j$i.{$r['identificador']} AS j$i{$r['identificador']}";
+ $sql .= "INNER JOIN {$r['esquemadb']}.{$r['tabela']}
+ AS j$i ON j$i.{$r['identificador']}::text = {$tabelaAnt}.{$r['identificador']}::text
+ ";
+ $tabelaAnt = "j".$i;
+ $niveis[] = "
+
+ ";
+
+ }
+ $niveis[] = "
+
+ ";
+
+ //verifica outras colunas
+ $vis = $regiao['colunasvisiveis'];
+ if($vis != ""){
+ $vis = str_replace(";",",",$vis);
+ $vis = str_replace(",,",",",$vis);
+ $vis = explode(",",$vis);
+ foreach($vis as $v){
+ //if($v != $regiao['colunanomeregiao'] && $v != $regiao['identificador']){
+ $colunas[] = "regiao.".$v." as ".$v;
+ //}
}
+ $colunas = array_unique($colunas);
}
- $sql .= "INNER JOIN {$regiao['esquemadb']}.{$regiao['tabela']}
- AS j$i ON j$i.{$regiao['identificador']}::text = {$tabelaAnt}.{$regiao['identificador']}::text
- ";
- $colunas[] = "j".$i.".".$regiao['colunanomeregiao'];
- $colunas[] = "j".$i.".".$regiao['identificador'];
$colunas = implode($colunas,",");
$sql = str_replace("__COLUNAS__",$colunas,$sql);
$xml .= "
- $sql
+ $sql
";
- //
+ $xml .= implode(" ",$niveis);
+ //verifica se existem propriedades (colunas adicionais)
+ if($vis != ""){
+ //apelidos
+ $apelidos = $regiao['apelidos'];
+ if($apelidos != ""){
+ $apelidos = str_replace(";",",",$apelidos);
+ $apelidos = str_replace(",,",",",$apelidos);
+ $apelidos = converte($apelidos);
+ $apelidos = explode(",",$apelidos);
+ }
+ else{
+ $apelidos = $vis;
+ }
+ $nvis = count($vis);
+ for($i = 0; $i < $nvis; $i++){
+ $xml .= "
+
+ ";
+ }
+ }
+ //fecha os elementos. LEVEL deve ser fechado pois o ultimo recebe as propriedades
$xml .= "
+
";
}
}
-
-$xml .= "
- ";
+//junta as medidas conforme o nome da tabela utilizada
$medidas = $m->listaMedidaVariavel();
-$tabela = "";
+$tbs = array();
+
foreach($medidas as $medida){
- $agregador = "sum";
- if($medida["permitesoma"] == 0 && $medida["permitemedia"] == 1){
- $agregador = "avg";
+ $k = $medida["esquemadb"].$medida["tabela"];
+ if(empty($tbs[$k])){
+ $tbs[$k] = array($medida);
}
- if($medida["permitesoma"] == 0 && $medida["permitemedia"] == 0){
- $agregador = "count";
+ else{
+ array_push($tbs[$k],$medida);
}
- if($tabela != $medida["esquemadb"].".".$medida["tabela"]){
+}
+
+//monta os cubos para cada esquema.tabela diferente
+$VirtualCubeDimension = array();
+$VirtualCubeMeasure = array();
+foreach($tbs as $tb){
+ //cabecalho de cada cubo obtido da primeira medida
+ $c = $tb[0];
+ $VirtualCubeDimension[] = "
+
+ ";
+ $xml .= "
+ ";
+ $xml .= "
+
+
+ ";
+ //inclui cada elemento em medida
+ foreach($tb as $medida){
+ $agregador = "sum";
+ if($medida["permitesoma"] == 0 && $medida["permitemedia"] == 1){
+ $agregador = "avg";
+ }
+ if($medida["permitesoma"] == 0 && $medida["permitemedia"] == 0){
+ $agregador = "count";
+ }
$xml .= "
-
-
+
+ ";
+ $VirtualCubeMeasure[] = "
+
";
}
$xml .= "
-
- ";
-
- $tabela = $medida["esquemadb"].".".$medida["tabela"];
+
+ ";
}
-$xml .= "
-
-
";
+$xml .= '