splor-mg / spreadmart

Data mart com dados orçamentários
0 stars 0 forks source link

Design inicial datamart #6

Closed fjuniorr closed 10 months ago

fjuniorr commented 10 months ago

Closes #2

fjuniorr commented 10 months ago

@splor-mg/assessoria isso ainda é um esboço mas já quero testar a execução no computador de vocês.

Preparem por favor um qlikview (@hslinhares) e um PowerBI (@labanca) que faz a leitura das tabelas criadas no banco postgres para fazermos alguns testes.

fjuniorr commented 10 months ago

Executamos ontem na reunião gerencial e tanto o qlikview quanto o PowerBI estão conseguindo consumir os dados depois de rodar o fluxo completo.

Acho que ainda existem pontos de melhoria mas vou tratar em issues separados.

Um ponto que não vai ser possível é a definição de chaves estrangeiras para permitir que o PowerBI faça a criação dos relacionamentos de forma automática.

Isso acontece porque na nossa modelagem da linktable as colunas chave podem possuir valores duplicados e isso não é aceito pelo postgres com erro de "there is no unique constraint matching given keys for referenced table link". Para reproduzir

create table link (
    chave_rec text,
    chave_desp text,
    uo_cod integer,
    fonte_cod integer,
    grupo_cod integer,
    primary key (chave_rec, chave_desp)
);

insert into link values ('2024|1021|60', 'blank', 1021, 60, null);
insert into link values('2024|1021|60', '2024|1021|60|3' , 1021, 60, 3);
insert into link values('2024|1021|60', '2024|1021|60|4' , 1021, 60, 4);

create table fact_rec (
    chave_rec text,
    receita_cod text,
    vl_rec numeric,
    foreign key (chave_rec) references link(chave_rec)
);

insert into fact_rec values ('2024|1021|60', '1999992299000', 10);
insert into fact_rec values ('2024|1021|60', '1921990199000', 20);

A explicação parece estar na própria definição de chave estrangeira e integridade referencial:

A table (called the referencing table) can refer to a column (or a group of columns) in another table (the referenced table) by using a foreign key. The referenced column(s) in the referenced table must be under a unique constraint, such as a primary key.

Apesar de que eu achava que era necessário que o valor referenciado existisse, e não necessariamente que ele fosse único.

fjuniorr commented 2 months ago

@labanca conseguiu criou os relacionamentos de forma automática no PowerBI

image

Talvez isso esteja ligado ao fato de que agora eu estou adicionando somente uma chave por tabela fato para criar a link table.