SELECT COUNT(*) FROM `Results` SELECT COUNT(DISTINCT run_id) AS unique_run_count FROM `Results`; SELECT COUNT(*) AS entries_for_run FROM `Results` WHERE run_id = -- your desired run_id here 2937; ALTER TABLE `Runs` ADD COLUMN grossrate DOUBLE GENERATED ALWAYS AS ( ( CASE WHEN pam_level = 4 THEN 2.0 WHEN pam_level = 6 THEN 2.5 WHEN pam_level = 8 THEN 3.0 ELSE FLOOR(LOG2(pam_level) * 10) / 10 END ) * symbolrate ) STORED; SELECT JSON_EXTRACT(voa_class, '$.atten_state[1]') AS atten_state_second FROM Runs WHERE run_id = 1000; SELECT DISTINCT run_id FROM Results r WHERE date_of_processing > '2025-11-14 12:00:00'; SELECT DISTINCT symbolrate FROM Runs WHERE pam_level = 4 AND symbolrate IS NOT NULL ORDER BY symbolrate; SELECT DISTINCT wavelength FROM Runs SELECT run_id, COUNT(DISTINCT eq_id) AS unique_eq_count, COUNT(*) AS entries_for_run FROM `Results` WHERE run_id IS NOT NULL GROUP BY run_id ORDER BY run_id; SELECT COUNT(DISTINCT eq_id) AS unique_eq_count, COUNT(*) AS entries_for_run FROM `Results` WHERE run_id = -- your run_id here 2936; SELECT run_id, COUNT(DISTINCT eq_id) AS unique_eq_count FROM `Results` WHERE run_id IS NOT NULL GROUP BY run_id ORDER BY run_id; SELECT DISTINCT r.run_id, r.eq_id, e.equalizer_structure, e.eq, e.mlse FROM Results AS r JOIN Equalizer AS e USING (eq_id) WHERE r.run_id = -- your run_id here 2731 ORDER BY r.run_id, r.eq_id SELECT DISTINCT r.run_id FROM Results AS r JOIN Runs AS u ON r.run_id = u.run_id WHERE u.pam_level = 6 ORDER BY r.run_id; -- older than aug 2025 CREATE OR REPLACE VIEW dashboard_old AS SELECT r.run_id, r.eq_id, e.equalizer_structure, -- extract the DIR field from the JSON in e.MLSE MAX(JSON_UNQUOTE(JSON_EXTRACT(e.MLSE, '$.DIR'))) AS DIR, u.symbolrate, u.pam_level, u.wavelength, u.fiber_length, u.db_mode, -- accumulated dispersion in ps 0.09 * u.fiber_length * (u.wavelength - 1310) AS accumulated_dispersion, -- BER & new averages AVG(r.BER) AS avg_BER, MAX(r.SNR) AS max_SNR, MAX(r.GMI) AS max_GMI, AVG(r.Alpha) AS avg_Alpha, MIN(r.BER) AS min_BER, AVG(r.BER_precoded) AS avg_BER_precoded, MIN(r.BER_precoded) AS min_BER_precoded, COUNT(*) AS num_occurrences FROM Results AS r JOIN Runs AS u ON r.run_id = u.run_id JOIN Equalizer AS e ON r.eq_id = e.eq_id WHERE r.eq_id IS NOT NULL AND r.date_of_processing < '2025-08-01 00:00:00' GROUP BY r.run_id, r.eq_id, e.equalizer_structure, u.symbolrate, u.pam_level, u.wavelength, u.fiber_length, u.db_mode ORDER BY r.run_id, r.eq_id; CREATE OR REPLACE VIEW dashboard_new AS SELECT r.run_id, r.eq_id, e.equalizer_structure, -- extract the DIR field from the JSON in e.MLSE MAX(JSON_UNQUOTE(JSON_EXTRACT(e.MLSE, '$.DIR'))) AS DIR, u.symbolrate, u.pam_level, u.wavelength, u.fiber_length, u.db_mode, -- accumulated dispersion in ps 0.09 * u.fiber_length * (u.wavelength - 1310) AS accumulated_dispersion, -- BER & new averages AVG(r.BER) AS avg_BER, MAX(r.SNR) AS max_SNR, MAX(r.GMI) AS max_GMI, AVG(r.Alpha) AS avg_Alpha, MIN(r.BER) AS min_BER, AVG(r.BER_precoded) AS avg_BER_precoded, MIN(r.BER_precoded) AS min_BER_precoded, COUNT(*) AS num_occurrences FROM Results AS r JOIN Runs AS u ON r.run_id = u.run_id JOIN Equalizer AS e ON r.eq_id = e.eq_id WHERE r.eq_id IS NOT NULL AND r.date_of_processing >= '2025-08-01 00:00:00' GROUP BY r.run_id, r.eq_id, e.equalizer_structure, u.symbolrate, u.pam_level, u.wavelength, u.fiber_length, u.db_mode ORDER BY r.run_id, r.eq_id; CREATE OR REPLACE VIEW dashboard_ungrouped_alltime AS SELECT r.result_id, r.run_id, r.eq_id, e.equalizer_structure, u.bitrate, u.grossrate, u.symbolrate, u.pam_level, u.wavelength, u.fiber_length, u.db_mode, u.rop_attenuation, -- accumulated dispersion in ps 0.07 * u.fiber_length * (u.wavelength - 1310) AS accumulated_dispersion, r.date_of_processing, r.numBits, r.numBitErr, r.BER, r.numBitErr_precoded, r.BER_precoded, r.STD, r.STDrx, r.GMI, r.AIR, r.EVM, r.Alpha FROM Results AS r JOIN Runs AS u ON r.run_id = u.run_id JOIN Equalizer AS e ON r.eq_id = e.eq_id WHERE r.eq_id IS NOT NULL; CREATE OR REPLACE VIEW dashboard_ungrouped_aug_nov_2025 AS SELECT r.result_id, r.run_id, r.eq_id, e.equalizer_structure, u.bitrate, u.grossrate, u.symbolrate, u.pam_level, u.wavelength, u.fiber_length, u.db_mode, u.rop_attenuation, -- accumulated dispersion in ps 0.07 * u.fiber_length * (u.wavelength - 1310) AS accumulated_dispersion, r.date_of_processing, r.numBits, r.numBitErr, r.BER, r.numBitErr_precoded, r.BER_precoded, r.STD, r.STDrx, r.GMI, r.AIR, r.EVM, r.Alpha FROM Results AS r JOIN Runs AS u ON r.run_id = u.run_id JOIN Equalizer AS e ON r.eq_id = e.eq_id WHERE r.eq_id IS NOT NULL AND r.date_of_processing >= '2025-08-01 00:00:00' AND r.date_of_processing < '2025-11-14 00:00:00'; -- Das waren meine ehemals besten BERs, im Nov habe ich ML-based hinzugefügt und -- das Rx Filter nochmal sehr eng gestellt, das war inbesondere bei geringeren Raten sehr hilfreich um -- out.of-band noise zu filtern -> BER ging ja teilweise runter und wieder hoch... CREATE OR REPLACE VIEW dashboard_ungrouped_aug_nov_2025 AS SELECT r.result_id, r.run_id, r.eq_id, e.equalizer_structure, u.bitrate, u.grossrate, u.symbolrate, u.pam_level, u.wavelength, u.fiber_length, u.db_mode, u.rop_attenuation, -- accumulated dispersion in ps 0.07 * u.fiber_length * (u.wavelength - 1310) AS accumulated_dispersion, r.date_of_processing, r.numBits, r.numBitErr, r.BER, r.numBitErr_precoded, r.BER_precoded, r.STD, r.STDrx, r.GMI, r.AIR, r.EVM FROM Results AS r JOIN Runs AS u ON r.run_id = u.run_id JOIN Equalizer AS e ON r.eq_id = e.eq_id WHERE r.eq_id IS NOT NULL AND r.date_of_processing >= '2025-08-01 00:00:00' AND r.date_of_processing < '2025-11-14 00:00:00'; CREATE OR REPLACE VIEW dashboard_ungrouped_old AS SELECT r.result_id, r.run_id, r.eq_id, e.equalizer_structure, u.symbolrate, u.pam_level, u.wavelength, u.fiber_length, u.db_mode, -- accumulated dispersion in ps 0.07 * u.fiber_length * (u.wavelength - 1310) AS accumulated_dispersion, r.date_of_processing, r.numBits, r.numBitErr, r.BER, r.numBitErr_precoded, r.BER_precoded, r.STD, r.STDrx, r.GMI, r.AIR, r.EVM FROM Results AS r JOIN Runs AS u ON r.run_id = u.run_id JOIN Equalizer AS e ON r.eq_id = e.eq_id WHERE r.eq_id IS NOT NULL AND r.date_of_processing < '2025-08-01 00:00:00'; CREATE OR REPLACE VIEW dashboard_ungrouped_during_ecoc AS SELECT r.result_id, r.run_id, r.eq_id, e.equalizer_structure, u.symbolrate, u.pam_level, u.wavelength, u.fiber_length, u.db_mode, -- accumulated dispersion in ps 0.07 * u.fiber_length * (u.wavelength - 1310) AS accumulated_dispersion, r.date_of_processing, r.numBits, r.numBitErr, r.BER, r.numBitErr_precoded, r.BER_precoded, r.STD, r.STDrx, r.GMI, r.AIR, r.EVM FROM Results AS r JOIN Runs AS u ON r.run_id = u.run_id JOIN Equalizer AS e ON r.eq_id = e.eq_id WHERE r.eq_id IS NOT NULL AND r.date_of_processing > '2025-09-20 00:00:00'; SELECT COUNT(*) FROM `dashboard_ungrouped` CREATE OR REPLACE VIEW power_state_info AS SELECT run_id, power_laser AS power_laser, power_rop AS power_mzm, -- new power_rop first power_pd_in + CAST(voa_class->>'$.atten_state[1]' AS DECIMAL(12,6)) AS power_rop, -- then voa_atten CAST(voa_class->>'$.atten_state[1]' AS DECIMAL(12,6)) AS voa_atten, -- then the photodiode input power power_pd_in AS power_pd_in, -- appended columns wavelength, pam_level, db_mode, is_mpi, fiber_length FROM Runs;