generator.explores.funnel_analysis_explore
Funnel Analysis explore type.
1"""Funnel Analysis explore type.""" 2 3from __future__ import annotations 4 5from pathlib import Path 6from typing import Any, Dict, Iterator, List, Optional 7 8from ..views import View 9from . import Explore 10 11 12class FunnelAnalysisExplore(Explore): 13 """A Funnel Analysis Explore, from Baseline Clients Last Seen.""" 14 15 type: str = "funnel_analysis_explore" 16 n_funnel_steps: int = 4 17 18 @staticmethod 19 def from_views(views: List[View]) -> Iterator[FunnelAnalysisExplore]: 20 """ 21 If possible, generate a Funnel Analysis explore for this namespace. 22 23 Funnel analysis explores are only created for funnel_analysis views. 24 """ 25 for view in views: 26 if view.name == "funnel_analysis": 27 yield FunnelAnalysisExplore( 28 "funnel_analysis", 29 {"base_view": view.name}, 30 ) 31 32 @staticmethod 33 def from_dict(name: str, defn: dict, views_path: Path) -> FunnelAnalysisExplore: 34 """Get an instance of this explore from a dictionary definition.""" 35 return FunnelAnalysisExplore(name, defn["views"], views_path) 36 37 def _to_lookml(self, v1_name: Optional[str]) -> List[Dict[str, Any]]: 38 view_lookml = self.get_view_lookml("funnel_analysis") 39 views = view_lookml["views"] 40 n_events = len([d for d in views if d["name"].startswith("step_")]) 41 defn: List[Dict[str, Any]] = [ 42 { 43 "name": "funnel_analysis", 44 "description": "Count funnel completion over time. Funnels are limited to a single day.", 45 "view_label": " User-Day Funnels", 46 "always_filter": { 47 "filters": [ 48 {"submission_date": "14 days"}, 49 ] 50 }, 51 "joins": [ 52 { 53 "name": f"step_{n}", 54 "relationship": "many_to_one", 55 "type": "cross", 56 } 57 for n in range(1, n_events + 1) 58 ], 59 "sql_always_where": "${funnel_analysis.submission_date} >= '2010-01-01'", 60 }, 61 {"name": "event_names", "hidden": "yes"}, 62 ] 63 64 return defn
13class FunnelAnalysisExplore(Explore): 14 """A Funnel Analysis Explore, from Baseline Clients Last Seen.""" 15 16 type: str = "funnel_analysis_explore" 17 n_funnel_steps: int = 4 18 19 @staticmethod 20 def from_views(views: List[View]) -> Iterator[FunnelAnalysisExplore]: 21 """ 22 If possible, generate a Funnel Analysis explore for this namespace. 23 24 Funnel analysis explores are only created for funnel_analysis views. 25 """ 26 for view in views: 27 if view.name == "funnel_analysis": 28 yield FunnelAnalysisExplore( 29 "funnel_analysis", 30 {"base_view": view.name}, 31 ) 32 33 @staticmethod 34 def from_dict(name: str, defn: dict, views_path: Path) -> FunnelAnalysisExplore: 35 """Get an instance of this explore from a dictionary definition.""" 36 return FunnelAnalysisExplore(name, defn["views"], views_path) 37 38 def _to_lookml(self, v1_name: Optional[str]) -> List[Dict[str, Any]]: 39 view_lookml = self.get_view_lookml("funnel_analysis") 40 views = view_lookml["views"] 41 n_events = len([d for d in views if d["name"].startswith("step_")]) 42 defn: List[Dict[str, Any]] = [ 43 { 44 "name": "funnel_analysis", 45 "description": "Count funnel completion over time. Funnels are limited to a single day.", 46 "view_label": " User-Day Funnels", 47 "always_filter": { 48 "filters": [ 49 {"submission_date": "14 days"}, 50 ] 51 }, 52 "joins": [ 53 { 54 "name": f"step_{n}", 55 "relationship": "many_to_one", 56 "type": "cross", 57 } 58 for n in range(1, n_events + 1) 59 ], 60 "sql_always_where": "${funnel_analysis.submission_date} >= '2010-01-01'", 61 }, 62 {"name": "event_names", "hidden": "yes"}, 63 ] 64 65 return defn
A Funnel Analysis Explore, from Baseline Clients Last Seen.
@staticmethod
def
from_views( views: List[generator.views.view.View]) -> Iterator[FunnelAnalysisExplore]:
19 @staticmethod 20 def from_views(views: List[View]) -> Iterator[FunnelAnalysisExplore]: 21 """ 22 If possible, generate a Funnel Analysis explore for this namespace. 23 24 Funnel analysis explores are only created for funnel_analysis views. 25 """ 26 for view in views: 27 if view.name == "funnel_analysis": 28 yield FunnelAnalysisExplore( 29 "funnel_analysis", 30 {"base_view": view.name}, 31 )
If possible, generate a Funnel Analysis explore for this namespace.
Funnel analysis explores are only created for funnel_analysis views.
@staticmethod
def
from_dict( name: str, defn: dict, views_path: pathlib.Path) -> FunnelAnalysisExplore:
33 @staticmethod 34 def from_dict(name: str, defn: dict, views_path: Path) -> FunnelAnalysisExplore: 35 """Get an instance of this explore from a dictionary definition.""" 36 return FunnelAnalysisExplore(name, defn["views"], views_path)
Get an instance of this explore from a dictionary definition.