resource "datadog_dashboard" "dtf_dashboard" {
  layout_type = "ordered"
  reflow_type = "fixed"
  title       = "DTF"
  url         = "/dashboard/ab4-8d4-5wh/dtf"
  template_variable {
    available_values = [
      "prod",
      "qa",
      "stage",
      "dev",
    ]
    defaults = ["stage"]
    name     = "env"
    prefix   = "env"
  }
  template_variable {
    available_values = [
      "cm_charts_yt",
      "cm_amazon_playlists",
      "cm_amazon_charts",
      "dapd_apple",
      "dapd_spotify",
    ]
    defaults = [
      "dapd_apple",
      "dapd_spotify",
    ]
    name   = "project"
    prefix = "project"
  }
  template_variable {
    available_values = [
      "v2",
      "v1",
    ]
    defaults = ["v2"]
    name     = "version"
    prefix   = "version"
  }
  widget {
    query_value_definition {
      autoscale   = true
      precision   = 2
      title       = "DTF Import Completed count"
      title_align = "left"
      title_size  = "16"
      request {
        formula {
          formula_expression = "query1"
        }
        query {
          metric_query {
            aggregator  = "sum"
            data_source = "metrics"
            name        = "query1"
            query       = "avg:dtf_importer_task.uow_status{$env,$project,$version,status:import_completed}.as_count()"
          }
        }
      }
    }
    widget_layout {
      height          = 2
      is_column_break = false
      width           = 3
      x               = 0
      y               = 0
    }
  }
  widget {
    timeseries_definition {
      legend_columns = [
        "avg",
        "max",
        "min",
        "sum",
        "value",
      ]
      legend_layout = "auto"
      show_legend   = true
      title         = "DTF Import Completed"
      title_align   = "left"
      title_size    = "16"
      request {
        display_type   = "bars"
        on_right_yaxis = false
        formula {
          formula_expression = "query1"
        }
        query {
          metric_query {
            data_source = "metrics"
            name        = "query1"
            query       = "sum:dtf_importer_task.uow_status{$env,$project,$version,status:import_completed} by {uow_id}.as_count()"
          }
        }
        style {
          line_type  = "solid"
          line_width = "normal"
          palette    = "dog_classic"
        }
      }
    }
    widget_layout {
      height          = 2
      is_column_break = false
      width           = 6
      x               = 3
      y               = 0
    }
  }
  widget {
    query_value_definition {
      autoscale   = true
      precision   = 2
      title       = "DTF Import Failed count"
      title_align = "left"
      title_size  = "16"
      request {
        formula {
          formula_expression = "query1"
        }
        query {
          metric_query {
            aggregator  = "sum"
            data_source = "metrics"
            name        = "query1"
            query       = "avg:dtf_importer_task.uow_status{status:import_failed,$env,$project,$version}.as_count()"
          }
        }
      }
    }
    widget_layout {
      height          = 2
      is_column_break = false
      width           = 3
      x               = 0
      y               = 2
    }
  }
  widget {
    timeseries_definition {
      legend_columns = [
        "avg",
        "max",
        "min",
        "sum",
        "value",
      ]
      legend_layout = "auto"
      show_legend   = true
      title         = "DTF Import Failed"
      title_align   = "left"
      title_size    = "16"
      request {
        display_type   = "bars"
        on_right_yaxis = false
        formula {
          formula_expression = "query1"
        }
        query {
          metric_query {
            data_source = "metrics"
            name        = "query1"
            query       = "sum:dtf_importer_task.uow_status{status:import_failed,$env,$project,$version} by {uow_id}.as_count()"
          }
        }
        style {
          line_type  = "solid"
          line_width = "normal"
          palette    = "dog_classic"
        }
      }
    }
    widget_layout {
      height          = 2
      is_column_break = false
      width           = 6
      x               = 3
      y               = 2
    }
  }
  widget {
    query_table_definition {
      has_search_bar = "auto"
      title          = "Max databricks execution time"
      title_align    = "left"
      title_size     = "16"
      request {
        limit = 0
        formula {
          alias              = "max"
          cell_display_mode  = "number"
          formula_expression = "query1"
          limit {
            count = 500
            order = "desc"
          }
        }
        query {
          metric_query {
            aggregator  = "max"
            data_source = "metrics"
            name        = "query1"
            query       = "avg:dtf_importer_task.dbx_execution_timerange.max{$env,$project,$version} by {uow_id,project}"
          }
        }
      }
    }
    widget_layout {
      height          = 4
      is_column_break = false
      width           = 3
      x               = 0
      y               = 4
    }
  }
  widget {
    query_table_definition {
      has_search_bar = "auto"
      live_span      = "1d"
      title          = "Max pipeline execution time"
      title_align    = "left"
      title_size     = "16"
      request {
        limit = 0
        formula {
          alias              = "max"
          cell_display_mode  = "number"
          formula_expression = "query1"
          limit {
            count = 500
            order = "desc"
          }
        }
        query {
          metric_query {
            aggregator  = "max"
            data_source = "metrics"
            name        = "query1"
            query       = "avg:dtf_importer_task.pipeline_execution_timerange.max{$env,$project,$version} by {uow_id,project}"
          }
        }
      }
    }
    widget_layout {
      height          = 4
      is_column_break = false
      width           = 3
      x               = 3
      y               = 4
    }
  }
}
