Bom dia,
Como posso transferir um dataset do github para o postgre para manipula-lo?
Como posso criar Dashboard para graficos e tabelas com o postgre?
Bom dia,
Como posso transferir um dataset do github para o postgre para manipula-lo?
Como posso criar Dashboard para graficos e tabelas com o postgre?
Para transferir um dataset do GitHub para o PostgreSQL, você pode fazer o seguinte: clone ou baixe o arquivo (por exemplo, um .csv) para sua máquina, depois use uma ferramenta como o pgAdmin, o DBeaver ou mesmo comandos SQL (COPY ou \copy) para importar esse arquivo para uma tabela no PostgreSQL.
Já para criar dashboards com gráficos e tabelas usando o PostgreSQL como base de dados, o mais comum é usar uma ferramenta de BI como Metabase, Tableau, Power BI ou Grafana. Você conecta a ferramenta ao banco, monta as consultas (ou usa SQL direto) e cria os painéis interativos.
Bom dia,
Baixei o Grafana
Obrigada .
Bom dia,
Tentei criar estas procedure no postgresql mas dá erro de sintaxe. O que pode ser?
Outra questão é que desejo criar uma outra procedure e dentro dela colocar uma view materializada para que com os resultados das consultas possa gerar gráficos. Como seria o esqueleto desta procedure?
CREATE PROCEDURE insercao_experimento(
pdt_hora_inicial TIMESTAMP,
pcd_id_dataset VARCHAR(20),
pnm_id_modelo VARCHAR(20),
pnm_id_metrica VARCHAR(20),
p_resultado TEXT,
pnm_usuario varchar(200))
BEGIN
declare id_usuario integer (20);
declare pMensagem VARCHAR(100);
declare pMensagemboa VARCHAR(100);
declare pcd_id_modelo VARCHAR(20);
declare pcd_id_metrica VARCHAR(20);
(select cd_id_modelo into pcd_id_modelo from TB_MODELO where nm_modelo = pnm_id_modelo);
(select cd_id_metrica into pcd_id_metrica from TB_METRICA where nm_metrica = pnm_id_metrica);
set id_usuario = (select cd_id_usuario from tb_usuariodataset where cd_id_dataset = pcd_id_dataset);
if id_usuario <=> 0
then
insert into TB_EXPERIMENTO values (
pdt_hora_inicial,
pcd_id_dataset,
pcd_id_modelo,
pcd_id_metrica,
p_resultado,
pnm_usuario);
set pMensagemboa = 'Experimento registrado com sucesso!!!'
select pMensagem;
else
CREATE PROCEDURE insercao_dataset(
vcd_id_dataset VARCHAR(20),
vnm_arquivo VARCHAR(100),
vtipo_arquivo VARCHAR(10),
vversao_dataset VARCHAR(20),
vtam_dataset VARCHAR(10),
vutilidade_dataset TEXT,
vultimo_acesso TIMESTAMP,
vlink_dataset TEXT)
BEGIN
DECLARE vId_Usuario integer;
DECLARE vId_dataset integer;
insert into TB_DATASET values (
vcd_id_dataset,
vnm_arquivo,
tipo_arquivo,
vversao_dataset,
vtam_dataset,
vutilidade_dataset,
vultimo_acesso,
vlink_dataset);
(select cd_id_usuario into set vId_Usuario from TB_USUARIO where cpf_usuario = vcpf_usuario);
(select cd_id_dataset into set vId_dataset from TB_DATASET pegar da mesma tabela
UPDATE TB_USUARIODATASET
SET cd_id_usuario = vId_Usuario
WHERE cd_id_usuario = INVALIDO;
UPDATE TB_USUARIODATASET
SET cd_id_dataset = vcd_id_dataset
WHERE cd_id_dataset = INVALIDO;
END
"Tentei criar estas procedure no postgresql mas dá erro de sintaxe. O que pode ser?"
No PostgreSQL, criar procedures é um pouco diferente de outras linguagens ou bancos, porque ele tem uma sintaxe bem específica. Para usar blocos de controle como IF, LOOP ou DECLARE variáveis, é obrigatório usar a linguagem plpgsql no CREATE PROCEDURE.
Outra coisa importante é que no PostgreSQL:
CREATE OR REPLACE PROCEDURE insercao_experimento(
pdt_hora_inicial TIMESTAMP,
pcd_id_dataset VARCHAR(20),
pnm_id_modelo VARCHAR(20),
pnm_id_metrica VARCHAR(20),
p_resultado TEXT,
pnm_usuario VARCHAR(200)
)
LANGUAGE plpgsql
AS $$
DECLARE
id_usuario INTEGER;
pMensagem TEXT;
pcd_id_modelo VARCHAR(20);
pcd_id_metrica VARCHAR(20);
BEGIN
SELECT cd_id_modelo INTO pcd_id_modelo
FROM TB_MODELO
WHERE nm_modelo = pnm_id_modelo;
SELECT cd_id_metrica INTO pcd_id_metrica
FROM TB_METRICA
WHERE nm_metrica = pnm_id_metrica;
SELECT cd_id_usuario INTO id_usuario
FROM tb_usuariodataset
WHERE cd_id_dataset = pcd_id_dataset;
IF id_usuario IS NOT NULL THEN
INSERT INTO TB_EXPERIMENTO
VALUES (
pdt_hora_inicial,
pcd_id_dataset,
pcd_id_modelo,
pcd_id_metrica,
p_resultado,
pnm_usuario
);
RAISE NOTICE 'Experimento registrado com sucesso!';
ELSE
RAISE NOTICE 'Usuário não cadastrado.';
END IF;
END;
$$;
!
CREATE OR REPLACE PROCEDURE insercao_dataset(
vcd_id_dataset VARCHAR(20),
vnm_arquivo VARCHAR(100),
vtipo_arquivo VARCHAR(10),
vversao_dataset VARCHAR(20),
vtam_dataset VARCHAR(10),
vutilidade_dataset TEXT,
vultimo_acesso TIMESTAMP,
vlink_dataset TEXT,
vcpf_usuario VARCHAR(20) -- Falta no seu script, mas precisa!
)
LANGUAGE plpgsql
AS $$
DECLARE
vId_Usuario INTEGER;
BEGIN
INSERT INTO TB_DATASET (
cd_id_dataset,
nm_arquivo,
tipo_arquivo,
versao_dataset,
tam_dataset,
utilidade_dataset,
ultimo_acesso,
link_dataset
) VALUES (
vcd_id_dataset,
vnm_arquivo,
vtipo_arquivo,
vversao_dataset,
vtam_dataset,
vutilidade_dataset,
vultimo_acesso,
vlink_dataset
);
SELECT cd_id_usuario INTO vId_Usuario
FROM TB_USUARIO
WHERE cpf_usuario = vcpf_usuario;
-- Exemplo de UPDATE
UPDATE TB_USUARIODATASET
SET cd_id_usuario = vId_Usuario
WHERE cd_id_usuario = 'INVALIDO';
UPDATE TB_USUARIODATASET
SET cd_id_dataset = vcd_id_dataset
WHERE cd_id_dataset = 'INVALIDO';
RAISE NOTICE 'Dataset inserido e relacionamento atualizado.';
END;
$$;
!
"Outra questão é que desejo criar uma outra procedure e dentro dela colocar uma view materializada para que com os resultados das consultas possa gerar gráficos. Como seria o esqueleto desta procedure?"
A view materializada não é criada dentro de uma procedure. Você cria a view materializada uma única vez com CREATE MATERIALIZED VIEW (código 1). Depois, dentro da procedure, você só manda atualizar essa view com REFRESH MATERIALIZED VIEW (código 2).
CREATE MATERIALIZED VIEW vw_relatorio_experimento AS
SELECT
e.pdt_hora_inicial,
d.nm_arquivo,
m.nm_modelo,
t.nm_metrica,
e.p_resultado
FROM
TB_EXPERIMENTO e
JOIN
TB_DATASET d ON e.cd_id_dataset = d.cd_id_dataset
JOIN
TB_MODELO m ON e.cd_id_modelo = m.cd_id_modelo
JOIN
TB_METRICA t ON e.cd_id_metrica = t.cd_id_metrica;
!
CREATE OR REPLACE PROCEDURE atualizar_view_relatorio()
LANGUAGE plpgsql
AS $$
BEGIN
REFRESH MATERIALIZED VIEW vw_relatorio_experimento;
RAISE NOTICE 'View materializada atualizada com sucesso!';
END;
$$;
!CALL atualizar_view_relatorio();
Obrigada.