in generator/views/funnel_analysis_view.py [0:0]
def _event_types_lookml(self) -> List[Dict[str, Any]]:
events = (
[
{
"name": "event_types",
"derived_table": {
"sql": dedent(
f"""
SELECT
mozfun.event_analysis.aggregate_match_strings(
ARRAY_AGG(
DISTINCT
{{% if _filters['property_value'] -%}}
mozfun.event_analysis.event_property_value_to_match_string(
et.index,
properties.index,
property_value.value
)
{{% elsif _filters['property_name'] -%}}
mozfun.event_analysis.event_property_index_to_match_string(
et.index,
properties.index
)
{{% else -%}}
mozfun.event_analysis.event_index_to_match_string(et.index)
{{% endif -%}}
IGNORE NULLS
)
) AS match_string
FROM
{self.tables[0]['event_types']} AS et
LEFT JOIN
UNNEST(COALESCE(event_properties, [])) AS properties
LEFT JOIN
UNNEST(properties.value) AS property_value
WHERE
{{% condition category %}} category {{% endcondition %}}
AND {{% condition event %}} event {{% endcondition %}}
AND {{% condition property_name %}} properties.key {{% endcondition %}}
AND {{% condition property_value %}} property_value.key {{% endcondition %}}
"""
),
},
"filters": [
{
"name": "category",
"description": "The event category, as defined in metrics.yaml.",
"type": "string",
"suggest_explore": "event_names",
"suggest_dimension": "event_names.category",
"suggest_persist_for": DEFAULT_MAX_SUGGEST_PERSIST_FOR,
},
{
"name": "event",
"description": "The event name.",
"type": "string",
"suggest_explore": "event_names",
"suggest_dimension": "event_names.event",
"suggest_persist_for": DEFAULT_MAX_SUGGEST_PERSIST_FOR,
},
{
"name": "property_name",
"description": "The event property name.",
"type": "string",
"suggest_explore": "event_names",
"suggest_dimension": "event_names.property_name",
"suggest_persist_for": DEFAULT_MAX_SUGGEST_PERSIST_FOR,
},
{
"name": "property_value",
"description": "The event property value.",
"type": "string",
"suggest_explore": "event_names",
"suggest_dimension": "event_names.property_value",
"suggest_persist_for": DEFAULT_MAX_SUGGEST_PERSIST_FOR,
},
],
"dimensions": [
{
"name": "match_string",
"hidden": "yes",
"sql": "${TABLE}.match_string",
}
],
}
]
+ [
{
"name": f"step_{n}",
"extends": ["event_types"],
}
for n in range(1, self.n_events() + 1)
]
+ [
{
"name": "event_names",
"derived_table": {
"sql": (
"SELECT category, "
" event, "
" property.key AS property_name, "
" property_value.key AS property_value, "
" property_value.index as property_index "
f"FROM {self.tables[0]['event_types']} "
"LEFT JOIN UNNEST(event_properties) AS property "
"LEFT JOIN UNNEST(property.value) AS property_value "
)
},
"dimensions": [
{
"name": "category",
"type": "string",
"sql": "${TABLE}.category",
},
{
"name": "event",
"type": "string",
"sql": "${TABLE}.event",
},
{
"name": "property_name",
"type": "string",
"sql": "${TABLE}.property_name",
},
{
"name": "property_value",
"type": "string",
"sql": "${TABLE}.property_value",
},
],
}
]
)
return events