Я пытаюсь выполнить профилирование данных с помощью функции Postgres. Я пробовал функцию ниже, что приводит к ошибке. Поскольку я новичок в функциях базы данных, процедурах и т. Д. Мне трудно найти эту проблему.Профилирование данных с использованием функции PostgreSQL
Фактическая работа:
Я хочу, чтобы перебрать все столбцы в таблице и выполнять данные профилирования, т.е. граф, граф отчетливые аннулирует, не аннулирует для символьных столбцов. Min, Max для цифр & даты столбцов. Пожалуйста помогите
CREATE OR REPLACE FUNCTION data_profiling (TABLE_VALUE VARCHAR)
RETURNS TABLE (
col_value VARCHAR,
DISTINCT_COUNT INT
)
AS $$
DECLARE
var_c Varchar;
BEGIN
FOR var_c IN(SELECT c.column_name,c.table_name
FROM information_schema.columns c
WHERE lower(c.table_name) = TABLE_VALUE)
LOOP
RETURN QUERY EXECUTE 'SELECT ' || var_c ||' as col_name, count(distinct ' || var_c ||') as distinct_count
FROM ' || TABLE_VALUE || ' group by ' || var_c;
END LOOP;
END; $$
LANGUAGE 'plpgsql';
Ошибка:
ERROR: structure of query does not match function result type
DETAIL: Returned type character(50) does not match expected type character varying in column 1.
CONTEXT: PL/pgSQL function data_profiling(character varying) line 10 at RETURN QUERY
Нет, это не обязательно. –