Я загрузил трассировки использования кластера Google, которые выполняются в течение 1 месяца, в мою локальную рабочую среду MySQL, чтобы извлечь некоторый анализ данных. Я использую Count() в функции, чтобы вернуть ряд задач с ошибками (event_type in (3,5,7)) и (Job_id and Tasks_index), которые происходят в timestamp canonical_time и machine_id:
ожидаемый результат с разумным количеством отказов, как в наборе данных Google
функция такая:
DELIMITER $$
CREATE DEFINER=`root`@`127.0.0.1` FUNCTION `FnGetTotalRejectTasks357`(machine_id bigint(20), tm timestamp) RETURNS bigint(20)
DETERMINISTIC
RETURN (
SELECT COUNT(*)
from
(
SELECT distinct job_id, task_index
from ftacpu.tasksAllevents
where machine_id = machine_id and event_type in (3,5,7) and canonical_time = tm
) as topF
)
и я использую вызов SQL-запроса:
select
e.canonical_time,
e.machine_id,
FnGetTotalRejectTasks357(e.machine_id, e.canonical_time) as total_submit_Tasks
from ftacpu.tasksAllevents e
group by e.machine_id, e.canonical_time;
И неожиданный вывод:
после использования функции Огромное количество значений не такие, как в наборе данных.
но текущий результат показывает больше значений в определенной метке времени, тогда как на самом деле это меньше значений.
что может быть не так с моей функцией? или позвоните по телефону?
Вы имеете в виду, где machine_id = machine_id? (machine_id bigint (20), временная метка tm)? быть похожим на: например: (mch_Id bigint (20), tm timestamp)? где machine_id = mch_Id
я имею в виду machine_id = machine_id
спасибо проверим это






не используйте переменные с тем же именем, что и имена столбцов, которые сбивают базу данных