diff --git a/ferramentas/saiku/esquemaxml.php b/ferramentas/saiku/esquemaxml.php
index 1382980..16f45b5 100644
--- a/ferramentas/saiku/esquemaxml.php
+++ b/ferramentas/saiku/esquemaxml.php
@@ -7,9 +7,9 @@
//utilize $regiao para obter o xml de uma so regiao
//
/**
-http://localhost/i3geo/ferramentas/saiku/esquemaxml.php?output=&xmlesquema=http://localhost/i3geo/ferramentas/saiku/testemondrian.xml&output=xml
-http://localhost/i3geo/ferramentas/saiku/esquemaxml.php?xmlesquema=&output=xml®iao=1
-*/
+ http://localhost/i3geo/ferramentas/saiku/esquemaxml.php?output=xml
+ http://localhost/i3geo/ferramentas/saiku/esquemaxml.php?xmlesquema=&output=xml®iao=1
+ */
//
//quando o saiku e iniciado de fora do i3geo, e necessario inicializar um mapfile para uso como base dos mapas
@@ -90,9 +90,14 @@ $VirtualCubeDimensionDaRegiao = array();
$VirtualCubeMeasureDaRegiao = array();
$nivelDaDimensao = array();
+$VirtualCubeDimensionDaMedida = array();
+$CubosPorMedida = array();
+
$dimRegioes = dimensoesGeo();
-$xmlRegioes = array_map(function($element){return $element['xml'];}, $dimRegioes);
+$xmlRegioes = array_map(function($element){
+ return $element['xml'];
+}, $dimRegioes);
$xmlRegioes = implode(" ",$xmlRegioes);
//
@@ -116,8 +121,10 @@ $xmlCuboTodas = cuboTodas();
//
$xmlCuboRegioes = cuboRegioes();
+$xmlCuboVariaveis = cuboVariaveis();
+
$xml = "";
-$xml .= $xmlTempo.$xmlRegioes.$xmlOutrasDim.$xmlDimensoesTabelas.$xmlCuboRegioes.$xmlCuboTodas;
+$xml .= $xmlTempo.$xmlRegioes.$xmlOutrasDim.$xmlDimensoesTabelas.$xmlCuboRegioes.$xmlCuboTodas.$xmlCuboVariaveis;
$xml .= "";
//xml pronto!!!!!
@@ -298,8 +305,8 @@ function pegaSelecaoRegioes(){
}
}
return array(
- "selecaoRegiao"=>$selecaoRegiao,
- "codigo_tipo_regiao"=>$codigo_tipo_regiao
+ "selecaoRegiao"=>$selecaoRegiao,
+ "codigo_tipo_regiao"=>$codigo_tipo_regiao
);
}
}
@@ -360,7 +367,7 @@ function sqlDasRegioes($regiao,$caminho,$chavesRegiao){
$nomesColunas[] = " nome".$regiaoJoin["codigo_tipo_regiao"];
$juncoes .= " JOIN {$regiaoJoin['esquemadb']}.{$regiaoJoin['tabela']} as $tabelaAtual ON
- $tabelaAtual.$colunaLigacaoAtual::text = $tabelaAnterior.$colunaLigacaoAnterior::text
+ $tabelaAtual.$colunaLigacaoAtual::text = $tabelaAnterior.$colunaLigacaoAnterior::text
";
$codRegioes[] = $regiaoJoin["codigo_tipo_regiao"];
}
@@ -403,12 +410,12 @@ function dimensoesGeo(){
$sqls = array();
$temp = converte($regiao["nome_tipo_regiao"]);
$xml1 = "
-
-
+
+
";
$xml2 = "
-
-
+
+
";
//
//cria uma view juntando as tabelas da hierarquia de regioes
@@ -433,13 +440,13 @@ function dimensoesGeo(){
$temp = converte($regiao["nome_tipo_regiao"]);
$niveisXml1[] = "
-
- ";
+
+ ";
$niveisXml2[] = "
-
- ";
+
+ ";
//juncoes
while($caminho){
$a = array_shift($caminho);
@@ -482,14 +489,14 @@ function dimensoesGeo(){
$sqlreg = " WHERE tabela{$regiao["codigo_tipo_regiao"]}.".$rs["sql"];
}
$xml1 .= "
-
- ".$dadosSelect["select"].$sqlreg."
-
+
+ ".$dadosSelect["select"].$sqlreg."
+
";
$xml2 .= "
-
- ".$dadosSelect["select"].$sqlreg."
-
+
+ ".$dadosSelect["select"].$sqlreg."
+
";
$niveisXml1 = array_reverse($niveisXml1);
$niveisXml2 = array_reverse($niveisXml2);
@@ -553,7 +560,7 @@ function dimensoesOutras(){
return $xml3;
}
function dimensoesTabelas(){
- global $nivelDaDimensao,$dimRegioes, $filhosDaRegiao, $m, $VirtualCubeDimension, $VirtualCubeMeasure, $chavesRegiao, $medidas, $codigo_tipo_regiao, $VirtualCubeDimensionDaRegiao, $VirtualCubeMeasureDaRegiao;
+ global $VirtualCubeDimensionDaMedida, $CubosPorMedida, $nivelDaDimensao, $dimRegioes, $filhosDaRegiao, $m, $VirtualCubeDimension, $VirtualCubeMeasure, $chavesRegiao, $medidas, $codigo_tipo_regiao, $VirtualCubeDimensionDaRegiao, $VirtualCubeMeasureDaRegiao;
$xml = "";
$tbs = array();
@@ -567,6 +574,8 @@ function dimensoesTabelas(){
else{
array_push($tbs[$k],$medida);
}
+ $CubosPorMedida[$medida["nome_variavel"]] = array();
+ $VirtualCubeDimensionDaMedida[$medida["nome_variavel"]] = array();
}
}
//monta os cubos para cada esquema.tabela diferente
@@ -581,13 +590,24 @@ function dimensoesTabelas(){
";
array_push(
- $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],
- ""
- );
+ $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],
+ ""
+ );
array_push(
- $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],
- ""
- );
+ $VirtualCubeDimensionDaRegiao[$c["codigo_tipo_regiao"]],
+ ""
+ );
+
+ array_push(
+ $VirtualCubeDimensionDaMedida[$c["nome_variavel"]],
+ ""
+ );
+ array_push(
+ $VirtualCubeDimensionDaMedida[$c["nome_variavel"]],
+ ""
+ );
+
+
//verifica as dimensoes do tipo tempo
$dimEnsoes = array();
@@ -629,6 +649,7 @@ function dimensoesTabelas(){
//$dimEnsoes[] = '';
$xml .= "";
+
$incluirChaves = array("tabelamedida{$c["id_medida_variavel"]}.*");
//colunas quando o nome da coluna com os valores for vazia
foreach($tb as $mdd){
@@ -651,7 +672,7 @@ function dimensoesTabelas(){
}
$r = $chavesRegiao[$c["codigo_tipo_regiao"]];
$sql = "
- select ".implode(",",$incluirChaves).", tabelamedida{$c["id_medida_variavel"]}.{$c["colunaidgeo"]}::text as codigoreg
+ select ".implode(",",$incluirChaves).", tabelamedida{$c["id_medida_variavel"]}.{$c["colunaidgeo"]}::text as codigoreg
";
if(count($dimRegioes[$c["codigo_tipo_regiao"]]["colunas"]) > 0){
$sql .= ",".implode(",",$dimRegioes[$c["codigo_tipo_regiao"]]["colunas"]);
@@ -659,38 +680,38 @@ function dimensoesTabelas(){
}
$sql .= "
- from {$c["esquemadb"]}.{$c["tabela"]} as tabelamedida{$c["id_medida_variavel"]}
- JOIN {$r["esquemadb"]}.{$r["tabela"]} as tabela{$r["codigo_tipo_regiao"]}
- ON tabela{$r["codigo_tipo_regiao"]}.{$r["identificador"]}::text = tabelamedida{$c["id_medida_variavel"]}.{$c["colunaidgeo"]}::text
- ";
+ from {$c["esquemadb"]}.{$c["tabela"]} as tabelamedida{$c["id_medida_variavel"]}
+ JOIN {$r["esquemadb"]}.{$r["tabela"]} as tabela{$r["codigo_tipo_regiao"]}
+ ON tabela{$r["codigo_tipo_regiao"]}.{$r["identificador"]}::text = tabelamedida{$c["id_medida_variavel"]}.{$c["colunaidgeo"]}::text
+ ";
$sql .= $dimRegioes[$c["codigo_tipo_regiao"]]["juncoes"];
$f = array();
foreach($tb as $mdd){
if($mdd["filtro"] != ""){
$f[] = str_replace('"',"'",$mdd["filtro"]);
}
- }
+ }
if(count($f) > 0){
$sql .= " WHERE ".implode(" OR ",$f);
}
$xml .= "
- $sql
+ $sql
";
//dimensoes vinculadas
$temp = $dimRegioes[$c["codigo_tipo_regiao"]]["codRegioes"];
$temp[] = $c["codigo_tipo_regiao"];
foreach($temp as $cod){
$xml .= "
-
-
+
+
";
}
//inclui as dimensoes filhas
foreach($filhosDaRegiao[$c["codigo_tipo_regiao"]] as $fr){
$xml .= "
-
-
+
+
";
}
@@ -719,6 +740,10 @@ function dimensoesTabelas(){
";
$VirtualCubeMeasure[] = $u;
array_push($VirtualCubeMeasureDaRegiao[$c["codigo_tipo_regiao"]],$u);
+ //verifica em qual variavel entra
+ //
+ $u = "";
+ array_push($CubosPorMedida[$c["nome_variavel"]],$u);
}
$xml .= "
@@ -755,4 +780,19 @@ function cuboRegioes(){
}
return $xml;
}
+
+function cuboVariaveis(){
+ global $CubosPorMedida, $VirtualCubeDimensionDaMedida;
+ //var_dump($VirtualCubeDimensionDaMedida);exit;
+ $xml = "";
+ $chaves = array_keys($CubosPorMedida);
+ foreach ($chaves as $c){
+ $xml .= '';
+ $xml .= '';
+ $xml .= implode(" ",$VirtualCubeDimensionDaMedida[$c]);
+ $xml .= implode(" ",$CubosPorMedida[$c]);
+ $xml .= '';
+ }
+ return $xml;
+}
?>
diff --git a/ferramentas/saiku/testemondrian.xml b/ferramentas/saiku/testemondrian.xml
index 1842720..4d855c2 100644
--- a/ferramentas/saiku/testemondrian.xml
+++ b/ferramentas/saiku/testemondrian.xml
@@ -1,481 +1,302 @@
-
-
- select nu_ano from
- i3geo_metaestat.dim_tempo group
- by nu_ano order by nu_ano
-
-
-
-
+
+ select nu_ano from i3geo_metaestat.dim_tempo group by nu_ano order by nu_ano
+
+
-
-
- 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
- i3geo_metaestat.dim_tempo group by
- nu_ano,nu_mes,mes,nu_anomes
- order by nu_ano,nu_mes
-
-
-
-
-
+
+ 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 i3geo_metaestat.dim_tempo group by nu_ano,nu_mes,mes,nu_anomes order by nu_ano,nu_mes
+
+
+
-
-
- 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
- i3geo_metaestat.dim_tempo group by
- nu_ano,nu_mes,mes,nu_anomes
- order by nu_ano,nu_mes
-
+
+ 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 i3geo_metaestat.dim_tempo group by nu_ano,nu_mes,mes,nu_anomes order by nu_ano,nu_mes
+
+
+
+
+
+
+
+
+
+ SELECT tabela1.co_bairro::text as codigo, tabela1.co_bairro::text AS codigo1,tabela1.no_bairro::text AS nome1,tabela2.co_municipio::text AS codigo2,tabela2.no_cidade::text AS nome2,tabela3.co_uf::text AS codigo3,tabela3.no_uf::text AS nome3 FROM i3geo_metaestat.bairros as tabela1
+ JOIN i3geo_metaestat.municipios as tabela2 ON
+ tabela2.co_municipio::text = tabela1.co_municipio::text
+ JOIN i3geo_metaestat.uf as tabela3 ON
+ tabela3.co_uf::text = tabela2.co_uf::text
+
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
- SELECT regiao.co_bairro as codigo
- ,regiao.no_bairro
- AS nome,j0.no_cidade AS
- j0no_cidade,j0.co_municipio AS
- j0co_municipio,j1.no_uf AS
- j1no_uf,j1.co_uf AS
- j1co_uf,regiao.co_bairro as
- co_bairro,regiao.no_bairro as
- no_bairro,regiao.no_distr as
- no_distr,regiao.no_municip as
- no_municip FROM
- i3geo_metaestat.bairros AS regiao INNER JOIN
- i3geo_metaestat.municipios
- AS j0 ON j0.co_municipio::text =
- regiao.co_municipio::text
- INNER JOIN i3geo_metaestat.uf
- AS j1 ON
- j1.co_uf::text = j0.co_uf::text
-
+
+
+
+
+
+
+ SELECT tabela1.co_bairro::text as codigo, tabela1.co_bairro::text AS codigo1,tabela1.no_bairro::text AS nome1,tabela2.co_municipio::text AS codigo2,tabela2.no_cidade::text AS nome2,tabela3.co_uf::text AS codigo3,tabela3.no_uf::text AS nome3 FROM i3geo_metaestat.bairros as tabela1
+ JOIN i3geo_metaestat.municipios as tabela2 ON
+ tabela2.co_municipio::text = tabela1.co_municipio::text
+ JOIN i3geo_metaestat.uf as tabela3 ON
+ tabela3.co_uf::text = tabela2.co_uf::text
+
-
-
+
+
+
+
-
-
-
-
-
-
+
-
-
-
-
-
-
- SELECT regiao.co_colegiado as codigo
- ,regiao.no_colegiado AS nome FROM i3geo_metaestat.colegiado_gestao
- AS regiao
-
+
+
+
+
+
+
+ SELECT tabela47.co_colegiado::text as codigo, tabela47.co_colegiado::text AS codigo47,tabela47.no_colegiado::text AS nome47 FROM i3geo_metaestat.colegiado_gestao as tabela47
+
-
-
-
-
+
+
+
-
-
-
-
-
-
- SELECT
- co_uf::text as codigo,
- co_uf::text as co_uf,
- no_uf::text
- FROM
- i3geo_metaestat.uf
-
-
+
+
+
+
+
+
+ SELECT tabela47.co_colegiado::text as codigo, tabela47.co_colegiado::text AS codigo47,tabela47.no_colegiado::text AS nome47 FROM i3geo_metaestat.colegiado_gestao as tabela47
+
-
+
+
+
-
-
- ///////////////////////////////////////////////////////////////////////////
-
-
-
-
- SELECT a0.co_municipio::text as codigo ,a0.co_municipio::text AS co_municipio ,
- a0.no_cidade::text AS no_cidade ,b0.co_uf::text AS co_uf ,b0.no_uf::text AS no_uf
- FROM i3geo_metaestat.municipios as a0 JOIN i3geo_metaestat.uf as b0 ON
-a0.co_uf::text = b0.co_uf::text
-UNION
-SELECT a1.co_uf::text as codigo ,'','',a1.co_uf::text AS co_uf ,a1.no_uf::text AS no_uf FROM i3geo_metaestat.uf as a1
-
+
+
+
+
+
+
+ SELECT tabela3.co_uf::text as codigo, tabela3.co_uf::text AS codigo3,tabela3.no_uf::text AS nome3 FROM i3geo_metaestat.uf as tabela3
+
-
-
+
+
+
-
-
-
-
-
-
- SELECT regiao.co_bairro as codigo
- ,regiao.no_bairro
- AS nome,j0.no_cidade AS
- j0no_cidade,j0.co_municipio AS
- j0co_municipio,j1.no_uf AS
- j1no_uf,j1.co_uf AS
- j1co_uf,regiao.co_bairro as
- co_bairro,regiao.no_bairro as
- no_bairro,regiao.no_distr as
- no_distr,regiao.no_municip as
- no_municip FROM
- i3geo_metaestat.bairros AS regiao INNER JOIN
- i3geo_metaestat.municipios
- AS j0 ON j0.co_municipio::text =
- regiao.co_municipio::text
- INNER JOIN i3geo_metaestat.uf
- AS j1 ON
- j1.co_uf::text = j0.co_uf::text
-
+
+
+
+
+
+
+ SELECT tabela3.co_uf::text as codigo, tabela3.co_uf::text AS codigo3,tabela3.no_uf::text AS nome3 FROM i3geo_metaestat.uf as tabela3
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SELECT regiao.co_colegiado as codigo
- ,regiao.no_colegiado AS nome FROM i3geo_metaestat.colegiado_gestao
- AS regiao
-
-
-
-
-
+
-
-
-
-
-
-
- SELECT regiao.co_uf as codigo
- ,regiao.no_uf AS
- nome,regiao.co_uf as co_uf,regiao.sg_uf as
- sg_uf,regiao.no_uf as
- no_uf,regiao.no_regiao as no_regiao FROM
- i3geo_metaestat.uf AS
- regiao
-
+
+
+
+
+
+
+ SELECT tabela2.co_municipio::text as codigo, tabela2.co_municipio::text AS codigo2,tabela2.no_cidade::text AS nome2,tabela3.co_uf::text AS codigo3,tabela3.no_uf::text AS nome3 FROM i3geo_metaestat.municipios as tabela2
+ JOIN i3geo_metaestat.uf as tabela3 ON
+ tabela3.co_uf::text = tabela2.co_uf::text
+
-
-
-
+
+
+
+
+
-
-
-
-
-
-
- SELECT regiao.co_municipio as codigo
- ,regiao.no_cidade AS nome,j0.no_uf AS j0no_uf,j0.co_uf AS
- j0co_uf,regiao.co_municipio as co_municipio,regiao.no_cidade as
- no_cidade,regiao.co_uf as co_uf,regiao.sg_uf as
- sg_uf,regiao.area_territorial as
- area_territorial,regiao.nu_ano_instalacao as nu_ano_instalacao FROM
- i3geo_metaestat.municipios AS regiao INNER JOIN i3geo_metaestat.uf
- AS j0 ON j0.co_uf::text = regiao.co_uf::text
-
+
+
+
+
+
+
+ SELECT tabela2.co_municipio::text as codigo, tabela2.co_municipio::text AS codigo2,tabela2.no_cidade::text AS nome2,tabela3.co_uf::text AS codigo3,tabela3.no_uf::text AS nome3 FROM i3geo_metaestat.municipios as tabela2
+ JOIN i3geo_metaestat.uf as tabela3 ON
+ tabela3.co_uf::text = tabela2.co_uf::text
+
-
-
+
+
-
-
-
-
-
-
-
-
-
- SELECT dim.descncm as codigo, dim.descncm
- AS nome
- FROM public.sfb_teste as dim group by codigo
-
-
-
+
-
-
-
-
- select tb_indicador.*,ibge::text as codigodim,uf.co_uf::text as co_uf, ano::text as ano_ from
- idsus.tb_indicador
- JOIN i3geo_metaestat.municipios as municipio ON ibge::text = co_municipio::text
- JOIN i3geo_metaestat.uf as uf ON municipio.co_uf::text = uf.co_uf::text
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- select a.*,a.co_municipio::text as codigo,uf.co_uf::text as co_uf, ano::text as ano_
- from
- ibge.populacao_residente as a
- JOIN i3geo_metaestat.municipios AS municipio ON municipio.co_municipio::text = a.co_municipio::text
- JOIN i3geo_metaestat.uf as uf ON municipio.co_uf::text = uf.co_uf::text
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- select *,ano_farm||'-'||mes_farm_pop::text
- as
- ano_farm_mes_farm_pop_ from dbacoes_saude.tb_farmacia_pop
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- select *,coduf::text as codigo,ano::text as ano_ from
- public.sfb_teste
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ select tabelamedida12.*,ano::text as ano_, tabelamedida12.ibge::text as codigoreg
+ ,tabela2.co_municipio::text AS codigo2,tabela2.no_cidade::text AS nome2,tabela3.co_uf::text AS codigo3,tabela3.no_uf::text AS nome3
+ from idsus.tb_indicador as tabelamedida12
+ JOIN i3geo_metaestat.municipios as tabela2
+ ON tabela2.co_municipio::text = tabelamedida12.ibge::text
+ JOIN i3geo_metaestat.uf as tabela3 ON
+ tabela3.co_uf::text = tabela2.co_uf::text
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select tabelamedida40.*,'1'::numeric as contagem40,ano_farm||'-'||mes_farm_pop::text as ano_farm_mes_farm_pop_, tabelamedida40.co_ibge::text as codigoreg
+ ,tabela2.co_municipio::text AS codigo2,tabela2.no_cidade::text AS nome2,tabela3.co_uf::text AS codigo3,tabela3.no_uf::text AS nome3
+ from dbacoes_saude.tb_farmacia_pop as tabelamedida40
+ JOIN i3geo_metaestat.municipios as tabela2
+ ON tabela2.co_municipio::text = tabelamedida40.co_ibge::text
+ JOIN i3geo_metaestat.uf as tabela3 ON
+ tabela3.co_uf::text = tabela2.co_uf::text
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select tabelamedida25.*,ano::text as ano_, tabelamedida25.munic::text as codigoreg
+ ,tabela2.co_municipio::text AS codigo2,tabela2.no_cidade::text AS nome2,tabela3.co_uf::text AS codigo3,tabela3.no_uf::text AS nome3
+ from ibge.populacao_residente as tabelamedida25
+ JOIN i3geo_metaestat.municipios as tabela2
+ ON tabela2.co_municipio::text = tabelamedida25.munic::text
+ JOIN i3geo_metaestat.uf as tabela3 ON
+ tabela3.co_uf::text = tabela2.co_uf::text
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
--
libgit2 0.21.2