- "rawSql": "-- ***** 2023 report ***** --\n-- Metric 4: Failed deployment recovery time\nwith _deployments as (\n SELECT\n cdc.cicd_deployment_id as deployment_id,\n max(cdc.finished_date) as deployment_finished_date\n FROM\n cicd_deployment_commits cdc\n JOIN project_mapping pm on cdc.cicd_scope_id = pm.row_id\n and pm.`table` = 'cicd_scopes'\n WHERE\n pm.project_name in ($project)\n and cdc.result = 'SUCCESS'\n and cdc.environment = 'PRODUCTION'\n GROUP BY\n 1\n HAVING\n $__timeFilter(max(cdc.finished_date))\n),\n_incidents_for_deployments as (\n SELECT\n i.id as incident_id,\n i.created_date as incident_create_date,\n i.resolution_date as incident_resolution_date,\n fd.deployment_id as caused_by_deployment,\n fd.deployment_finished_date,\n date_format(fd.deployment_finished_date, '%y/%m') as deployment_finished_month\n FROM\n incidents i\n left join project_incident_deployment_relationships pim on i.id = pim.id\n join _deployments fd on pim.deployment_id = fd.deployment_id\n WHERE\n $__timeFilter(i.resolution_date)\n),\n_recovery_time_ranks as (\n SELECT\n *,\n percent_rank() over(\n order by\n TIMESTAMPDIFF(\n MINUTE,\n deployment_finished_date,\n incident_resolution_date\n )\n ) as ranks\n FROM\n _incidents_for_deployments\n),\n_median_recovery_time as (\n SELECT\n max(\n TIMESTAMPDIFF(\n MINUTE,\n deployment_finished_date,\n incident_resolution_date\n )\n ) as median_recovery_time\n FROM\n _recovery_time_ranks\n WHERE\n ranks <= 0.5\n),\n\n_is_collected_data as(\n SELECT\n CASE\n WHEN EXISTS(select COUNT(d.deployment_id) from _deployments) = 0 AND EXISTS(select COUNT(i.incident_id) FROM incidents) = 0 THEN 'No deployments and incidents'\n WHEN EXISTS(select COUNT(d.deployment_id) from _deployments) = 0 THEN 'No Deployments'\n WHEN EXISTS(select COUNT(i.incident_id) FROM incidents) = 0 THEN 'No Incidents'\n Else 'No incidents are mapped to deployments'\n END AS is_collected\n FROM\n _deployments d, _incidents_for_deployments i\n),\n\n_metric_recovery_time_2023_report as(\n SELECT\n CASE\n WHEN ('$dora_report') = '2023' THEN CASE\n WHEN is_collected = \"No deployments and incidents\" THEN \"N/A. Please check if you have collected deployments and incidents.\"\n WHEN is_collected = \"No Deployments\" THEN \"N/A. Please check if you have collected deployments.\"\n WHEN is_collected = \"No Incidents\" THEN \"N/A. Please check if you have collected incidents.\"\n WHEN median_recovery_time < 60 THEN CONCAT(round(median_recovery_time / 60, 1), \"(elite)\")\n WHEN median_recovery_time < 24 * 60 THEN CONCAT(round(median_recovery_time / 60, 1), \"(high)\")\n WHEN median_recovery_time < 7 * 24 * 60 THEN CONCAT(round(median_recovery_time / 60, 1), \"(medium)\")\n WHEN median_recovery_time >= 7 * 24 * 60 THEN CONCAT(round(median_recovery_time / 60, 1), \"(low)\")\n ELSE \"No data\"\n END\n END AS median_recovery_time\n FROM\n _median_recovery_time,\n _is_collected_data\n),\n-- ***** 2021 report ***** --\n-- Metric 4: Median time to restore service \n_incidents as (\n -- get the incidents created within the selected time period in the top-right corner\n SELECT\n distinct i.id,\n cast(lead_time_minutes as signed) as lead_time_minutes\n FROM\n incidents i\n join project_mapping pm on i.scope_id = pm.row_id\n and pm.`table` = i.`table`\n WHERE\n pm.project_name in (${project})\n and $__timeFilter(i.created_date)\n),\n_median_mttr_ranks as(\n SELECT\n *,\n percent_rank() over(\n order by\n lead_time_minutes\n ) as ranks\n FROM\n _incidents\n),\n_median_mttr as(\n SELECT\n max(lead_time_minutes) as median_time_to_resolve\n FROM\n _median_mttr_ranks\n WHERE\n ranks <= 0.5\n),\n_metric_mttr_2021_report as(\n SELECT\n CASE\n WHEN ('$dora_report') = '2021' THEN CASE\n WHEN median_time_to_resolve < 60 THEN \"Less than one hour(elite)\"\n WHEN median_time_to_resolve < 24 * 60 THEN \"Less than one day(high)\"\n WHEN median_time_to_resolve < 7 * 24 * 60 THEN \"Between one day and one week(medium)\"\n WHEN median_time_to_resolve >= 7 * 24 * 60 THEN \"More than one week(low)\"\n ELSE \"N/A. Please check if you have collected incidents.\"\n END\n END AS median_time_to_resolve\n FROM\n _median_mttr\n)\nSELECT\n median_recovery_time AS median_time_in_hour\nFROM\n _metric_recovery_time_2023_report\nWHERE\n ('$dora_report') = '2023'\nUNION\nSELECT\n median_time_to_resolve AS median_time_to_resolve\nFROM\n _metric_mttr_2021_report\nWHERE\n ('$dora_report') = '2021'",
0 commit comments