AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-220059

Héctor's questions

Martin Hope
Héctor
Asked: 2023-03-04 03:39:23 +0800 CST

Erro ao criar agregação contínua (visualização materializada) quando as colunas de origem e nova hora têm o mesmo nome (PSQL/TSDB)

  • 6

Estou enfrentando um problema ao criar um agregado contínuo em timescaledb (com base em visualizações materializadas) quando a coluna de tempo de origem e a nova coluna de tempo têm o mesmo nome abaixo:

CREATE MATERIALIZED VIEW IF NOT EXISTS minute_table
WITH (timescaledb.continuous) AS
SELECT
    time_bucket(INTERVAL '1 minute', my_time_col) AS my_time_col,
    ...
FROM source_table
GROUP BY my_time_col
WITH NO DATA;

Estou tendo o erro a seguir:

ERROR:  continuous aggregate view must include a valid time bucket function

Mas se eu alterar o novo nome da coluna de tempo, como no exemplo abaixo, funcionará:

CREATE MATERIALIZED VIEW IF NOT EXISTS minute_table
WITH (timescaledb.continuous) AS
SELECT
    time_bucket(INTERVAL '1 minute', my_time_col) AS my_time_col_asdf,
    ...
FROM source_table
GROUP BY my_time_col_asdf
WITH NO DATA;

Como posso contornar isso? Eu preciso que a fonte e as novas colunas de tempo tenham o mesmo nome...

postgresql
  • 1 respostas
  • 29 Views
Martin Hope
Héctor
Asked: 2023-03-04 03:02:56 +0800 CST

ERRO: CREATE MATERIALIZED VIEW ... WITH DATA não pode ser executado a partir de uma função

  • 7

Preciso executar CREATE MATERIALIZED VIEW ... WITH DATAa partir de uma função/procedimento, mas estou obtendo arquivos ERROR: CREATE MATERIALIZED VIEW ... WITH DATA cannot be executed from a function.

Existe alguma solução alternativa para isso além de fazer uma função retornar o texto da consulta de criação e copiá-lo e colá-lo para executá-lo?

Parece muito bobo, mas suponho que haja uma boa razão por trás disso ... Enfim, alguma solução alternativa para essa limitação?

Estou executando o postgresql 15.

postgresql
  • 1 respostas
  • 83 Views
Martin Hope
Héctor
Asked: 2023-02-04 22:37:28 +0800 CST

postgresl.conf vs conf.d/*: que tem maior precedência

  • 5

Se for definido o mesmo parâmetro ./postgresql.confe ./conf.d/something.confqual tem preferência ou qual substitui o outro?

postgresql
  • 1 respostas
  • 19 Views
Martin Hope
Héctor
Asked: 2021-09-25 05:46:09 +0800 CST

SELECIONE linhas da tabela uma a uma, comparando os valores de uma coluna com os valores de uma matriz

  • 1

Eu tenho uma matriz de carimbos de data/hora em um bloco de código PLPGSQL: timestamp_array.

Para cada elemento de timestamp_arrayeu quero pegar o próprio elemento ( timestamp_element) e algumas colunas de uma tabela ( my_table) que também tem uma coluna timestamp, mas não quero pegar a coluna timestamp em si, mas sim o elemento timestamp array. A condição é que eu só queira obter uma linha da tabela para cada elemento da matriz, a correspondência mais próxima (no passado) entre os elementos de carimbo de data/hora na matriz e a coluna de carimbo de data/hora da tabela.

O que eu quero alcançar é algo como:

FOR EACH timestamp_element IN ARRAY timestamp_array
LOOP
  EXECUTE $EXE$
    SELECT my_table.some_other_columns...
    FROM my_table
    WHERE my_table.timestamp <= $1
    ORDER BY my_table.timestamp DESC
    LIMIT 1
  $EXE$
  USING timestamp_element
  INTO tmp_array;

  EXECUTE
    INSERT INTO temporary_table
    VALUES ($1, array_to_string($2, ', '))
  USING timestamp_element, tmp_array;
END LOOP;

Não sei se o código anterior está 100% correto, mas é apenas para tentar explicar melhor o que quero alcançar. E, obviamente, o objetivo seria fazer o trabalho com apenas uma consulta, em vez de uma consulta por elemento de matriz.

Para colocar como um caso prático, se eu tiver um my_table:

carimbo de data/hora Cola ...
2020-02-13 23:12:07 12 ...
27-03-2020 10:37:01 15 ...
14-06-2020 16:32:44 7 ...
14-06-2020 17:01:57 33 ...

Com um timestamp_array:

[
  2020-02-15 12:00:00,
  2020-03-22 00:00:00,
  2020-06-14 17:00:00
]

Eu gostaria do seguinte temporary_tablesem usar uma consulta independente para cada elemento da matriz:

carimbo de data/hora Cola ...
2020-02-15 12:00:00 12 ...
2020-03-22 00:00:00 12 ...
2020-06-14 17:00:00 7 ...
postgresql plpgsql
  • 1 respostas
  • 1457 Views
Martin Hope
Héctor
Asked: 2021-09-24 00:03:35 +0800 CST

POSTGRESQL Subtrai a cada linha a linha anterior

  • 0

Estou escrevendo uma função que em algum passo eu tenho resultado de consulta como o seguinte:

carimbo de data/hora Combustível Consumido Volume processado
23-09-2021 5:00:00 3000000 982135
23-09-2021 6:00:00 3000010 982136
23-09-2021 7:00:00 3000030 982137
23-09-2021 8:00:00 3000032 982152

E eu tenho que traduzir para isso:

carimbo de data/hora Combustível Consumido Volume processado
23-09-2021 5:00:00 10 1
23-09-2021 6:00:00 20 2
23-09-2021 7:00:00 2 15

Com uma linha a menos, e traduzindo os valores acumulados para algum tipo de "taxa", subtraindo a cada linha a anterior e rotulando-a com o timestamp anterior. Como eu poderia conseguir isso?

Obrigado pelo seu tempo.

postgresql postgresql-13
  • 1 respostas
  • 2025 Views
Martin Hope
Héctor
Asked: 2021-09-22 09:48:29 +0800 CST

PLPGSQL armazena colunas de uma saída de consulta 2D em variáveis ​​de matriz

  • 1

Em alguma etapa de uma função plpgsql eu preciso armazenar um resultado de consulta 2D em variáveis ​​de matriz.

O código a seguir faz o trabalho para escalares (mas falha com matrizes):

SELECT col_a, col_b
FROM my_table
WHERE col_c = condition
INTO var_a, var_b;

O seguinte faz o trabalho para UMA coluna e UMA variável de matriz, mas não mais do que isso:

SELECT ARRAY(
    SELECT col_a
    FROM my_table
    WHERE col_c > condition
) INTO arr_a;

Como eu poderia armazenar várias linhas de col_a, b, c, d... em suas respectivas variáveis ​​de matriz sem ter que fazer uma consulta separada para cada coluna? Como no primeiro exemplo de código, mas para várias linhas e matrizes.

postgresql functions
  • 1 respostas
  • 262 Views
Martin Hope
Héctor
Asked: 2021-08-28 01:49:34 +0800 CST

incongruência de diferenciação de maiúsculas e minúsculas

  • 3

Estou tentando aprender e entender agrupamentos e como o postgresql compara e ordena strings, mas estou encontrando uma incongruência e não sei o que estou perdendo.

A pergunta:

SELECT datname, datcollate FROM pg_database;

Retorna que todo meu banco de dados usa agrupamento en_GB.UTF-8.

E a consulta:

SELECT table_schema, 
   table_name, 
   column_name,
   collation_name
FROM information_schema.columns
WHERE collation_name is not null
ORDER BY table_schema,
     table_name,
     ordinal_position;

Retorna que todas as colunas têm agrupamento 'C', o que significa (de acordo com minha pesquisa) que nenhum agrupamento é especificado. Então, suponho que o agrupamento de banco de dados seja usado, não é?

EDIT: Meu erro está aqui. A consulta anterior não retorna um resultado para todas as colunas, apenas para aquelas que collation_namenão são nulas, e as colunas com ordenação nula são as que herdam a ordenação de banco de dados. Então, eu estava pensando que as colunas foo.bar tinham Cagrupamento, mas nullna verdade eram.

Bem, a incongruência vem quando executo a consulta:

SELECT "name" FROM foo.bar ORDER BY "name" ASC;

Onde o tipo de dados da coluna "name" é texto e foo.bar é uma combinação schema.table criada pelo usuário. O resultado é semelhante ao humano ordenado alfabeticamente. De a/A a Z/z, não importa se é maiúscula ou minúscula.

Mas se eu executar a seguinte consulta:

SELECT "table_name"
FROM information_schema.tables
WHERE
    "table_name" ~ 'some_pattern'
    AND table_schema = 'foo'
    AND table_type = 'BASE TABLE'
ORDER BY "table_name" ASC;

Ele ordena o resultado de maneira semelhante a uma máquina, comparando byte a byte e, portanto, ordenando maiúsculas antes de minúsculas.

Por que existe essa diferença? Eu vi que o tipo de dados da coluna "table_name" não é "texto", mas "nome", mas não consigo descobrir se tem algo a ver.

Ter o agrupamento de banco de dados definido como en_GB.UTF-8 não deve ser suficiente para comparar o texto de maneira humana?

Obrigado pelo seu tempo.

postgresql order-by
  • 1 respostas
  • 99 Views
Martin Hope
Héctor
Asked: 2020-12-10 11:44:06 +0800 CST

SELECT função_sql(...) vs SELECT * FROM função_sql(...)

  • 2

Estou lendo a documentação do PostgreSQL pela primeira vez e ao enfrentar funções SQL acho que entendi todos os fundamentos, mas ainda não consigo ver a diferença entre SELECT sql_function(...)e SELECT * FROM sql_function(...)e quando usar um ou outro.

postgresql functions
  • 2 respostas
  • 750 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve