generator/views/operational_monitoring_alerting_view.py (45 lines of code) (raw):
"""Class to describe an Operational Monitoring Alert View."""
from typing import Any, Dict, Optional
from . import lookml_utils
from .operational_monitoring_view import OperationalMonitoringView
class OperationalMonitoringAlertingView(OperationalMonitoringView):
"""A view on a alert operational monitoring table."""
type: str = "operational_monitoring_alerting_view"
def to_lookml(self, v1_name: Optional[str], dryrun) -> Dict[str, Any]:
"""Get this view as LookML."""
if len(self.tables) == 0:
raise Exception((f"Operational Monitoring view {self.name} has no tables"))
reference_table = self.tables[0]["table"]
dimensions = [
d
for d in lookml_utils._generate_dimensions(reference_table, dryrun=dryrun)
if d["name"] != "submission"
]
dimensions.append(
{
"name": "submission_date",
"type": "date",
"sql": "${TABLE}.submission_date",
"datatype": "date",
"convert_tz": "no",
}
)
dimensions.append(
{
"name": "build_id_date",
"type": "date",
"hidden": "yes",
"sql": "PARSE_DATE('%Y%m%d', CAST(${TABLE}.build_id AS STRING))",
"datatype": "date",
"convert_tz": "no",
}
)
return {
"views": [
{
"name": self.name,
"sql_table_name": f"`{reference_table}`",
"dimensions": dimensions,
"measures": [
{"name": "errors", "type": "number", "sql": "COUNT(*)"}
],
}
]
}