generator/explores/ping_explore.py (27 lines of code) (raw):
"""Ping explore type."""
from __future__ import annotations
from pathlib import Path
from typing import Any, Dict, Iterator, List, Optional
from ..views import PingView, View
from . import Explore
class PingExplore(Explore):
"""A Ping Table explore."""
type: str = "ping_explore"
def _to_lookml(self, v1_name: Optional[str]) -> List[Dict[str, Any]]:
"""Generate LookML to represent this explore."""
explore_lookml = {
"name": self.name,
"view_name": self.views["base_view"],
"always_filter": {
"filters": self.get_required_filters("base_view"),
},
"joins": self.get_unnested_fields_joins_lookml(),
}
if datagroup := self.get_datagroup():
explore_lookml["persist_with"] = datagroup
return [explore_lookml]
@staticmethod
def from_views(views: List[View]) -> Iterator[PingExplore]:
"""Generate all possible PingExplores from the views."""
for view in views:
if view.view_type == PingView.type:
yield PingExplore(view.name, {"base_view": view.name})
@staticmethod
def from_dict(name: str, defn: dict, views_path: Path) -> PingExplore:
"""Get an instance of this explore from a name and dictionary definition."""
return PingExplore(name, defn["views"], views_path)