lookml-generator/generator/explores/operational_monitoring_expl...

122 строки
3.7 KiB
Python

"""Operational Monitoring Explore type."""
from __future__ import annotations
from pathlib import Path
from typing import Any, Dict, Iterator, List, Optional
from ..views import View
from . import Explore
class OperationalMonitoringExplore(Explore):
"""An Operational Monitoring Explore."""
type: str = "operational_monitoring_explore"
def __init__(
self,
name: str,
views: Dict[str, str],
views_path: Optional[Path] = None,
defn: Optional[Dict[str, Any]] = None,
):
"""Initialize OperationalMonitoringExplore."""
super().__init__(name, views, views_path)
if defn is not None:
self.branches = ", ".join(defn["branches"])
self.xaxis = defn.get("xaxis")
self.dimensions = defn.get("dimensions", {})
self.summaries = defn.get("summaries", [])
@staticmethod
def from_views(views: List[View]) -> Iterator[Explore]:
"""Generate an Operational Monitoring explore for this namespace."""
for view in views:
if view.view_type == "operational_monitoring_view":
yield OperationalMonitoringExplore(
"operational_monitoring",
{"base_view": view.name},
)
@staticmethod
def from_dict(
name: str, defn: dict, views_path: Path
) -> OperationalMonitoringExplore:
"""Get an instance of this explore from a dictionary definition."""
return OperationalMonitoringExplore(name, defn["views"], views_path, defn)
def _to_lookml(
self,
v1_name: Optional[str],
) -> List[Dict[str, Any]]:
base_view_name = self.views["base_view"]
filters = [
{f"{base_view_name}.branch": self.branches},
]
for dimension, info in self.dimensions.items():
if "default" in info:
filters.append({f"{base_view_name}.{dimension}": info["default"]})
defn: List[Dict[str, Any]] = [
{
"name": self.views["base_view"],
"always_filter": {
"filters": [
{"branch": self.branches},
]
},
"hidden": "yes",
},
]
return defn
class OperationalMonitoringAlertingExplore(Explore):
"""An Operational Monitoring Alerting Explore."""
type: str = "operational_monitoring_alerting_explore"
def __init__(
self,
name: str,
views: Dict[str, str],
views_path: Optional[Path] = None,
defn: Optional[Dict[str, Any]] = None,
):
"""Initialize OperationalMonitoringExplore."""
super().__init__(name, views, views_path)
@staticmethod
def from_views(views: List[View]) -> Iterator[Explore]:
"""Generate an Operational Monitoring explore for this namespace."""
for view in views:
if view.view_type in {
"operational_monitoring_alerting_view",
}:
yield OperationalMonitoringAlertingExplore(
"operational_monitoring",
{"base_view": view.name},
)
@staticmethod
def from_dict(
name: str, defn: dict, views_path: Path
) -> OperationalMonitoringAlertingExplore:
"""Get an instance of this explore from a dictionary definition."""
return OperationalMonitoringAlertingExplore(
name, defn["views"], views_path, defn
)
def _to_lookml(
self,
v1_name: Optional[str],
) -> List[Dict[str, Any]]:
defn: List[Dict[str, Any]] = [
{"name": self.views["base_view"], "hidden": "yes"},
]
return defn