def to_lookml()

in generator/views/glean_ping_view.py [0:0]


    def to_lookml(self, v1_name: Optional[str], dryrun) -> Dict[str, Any]:
        """Generate LookML for this view.

        The Glean views include a labeled metrics, which need to be joined
        against the view in the explore.
        """
        lookml = super().to_lookml(v1_name, dryrun=dryrun)
        # ignore nested join views
        lookml["views"] = [lookml["views"][0]]

        # iterate over all of the glean metrics and generate views for unnested
        # fields as necessary. Append them to the list of existing view
        # definitions.
        table = next(
            (table for table in self.tables if table.get("channel") == "release"),
            self.tables[0],
        )["table"]
        dimensions = self.get_dimensions(table, v1_name, dryrun=dryrun)
        dimension_names = {dimension["name"] for dimension in dimensions}

        client_id_field = self.get_client_id(dimensions, table)

        view_definitions = []
        metrics = self._get_glean_metrics(v1_name)
        for metric in metrics:
            looker_name = self._to_looker_name(metric)
            if looker_name not in dimension_names:
                continue  # skip metrics with no matching dimension
            if metric.type == "labeled_counter":
                view_name = f"{self.name}__{looker_name}"
                suggest_name = f"suggest__{view_name}"

                category, name = [
                    slug_to_title(v) for v in self._get_category_and_name(metric)
                ]
                view_label = f"{category} - {name}"
                metric_hidden = "no" if metric.is_in_source() else "yes"

                measures = [
                    {
                        "name": "count",
                        "type": "sum",
                        "sql": "${value}",
                        "hidden": metric_hidden,
                    }
                ]

                if client_id_field is not None:
                    # client_id field is missing for pings with minimal Glean schema
                    measures.append(
                        {
                            "name": "client_count",
                            "type": "count_distinct",
                            "sql": f"case when ${{value}} > 0 then ${{{self.name}.{client_id_field}}} end",
                            "hidden": metric_hidden,
                        }
                    )

                join_view: Dict[str, Any] = {
                    "name": view_name,
                    "label": view_label,
                    "dimensions": [
                        {
                            "name": "document_id",
                            "type": "string",
                            "sql": f"${{{self.name}.document_id}}",
                            "hidden": "yes",
                        },
                        # labeled counters need a primary key that incorporates
                        # their labels, otherwise we get jumbled results:
                        # https://github.com/mozilla/lookml-generator/issues/171
                        {
                            "name": "document_label_id",
                            "type": "string",
                            "sql": f"${{{self.name}.document_id}}-${{label}}",
                            "primary_key": "yes",
                            "hidden": "yes",
                        },
                        {
                            "name": "value",
                            "type": "number",
                            "sql": "${TABLE}.value",
                            "hidden": "yes",
                        },
                    ],
                    "measures": measures,
                }

                if looker_name in SUGGESTS_FOR_LABELED_COUNTERS:
                    join_view["dimensions"].append(
                        {
                            "name": "label",
                            "type": "string",
                            "sql": "${TABLE}.key",
                            "suggest_explore": suggest_name,
                            "suggest_dimension": f"{suggest_name}.key",
                            "hidden": metric_hidden,
                        },
                    )

                    suggest_view = {
                        "name": suggest_name,
                        "derived_table": {
                            "sql": dedent(
                                f"""
                                select
                                    m.key,
                                    count(*) as n
                                from {table} as t,
                                unnest(metrics.{metric.type}.{metric.id.replace(".", "_")}) as m
                                where date(submission_timestamp) > date_sub(current_date, interval 30 day)
                                    and sample_id = 0
                                group by key
                                order by n desc
                                """
                            )
                        },
                        "dimensions": [
                            {"name": "key", "type": "string", "sql": "${TABLE}.key"}
                        ],
                    }
                    view_definitions += [join_view, suggest_view]
                else:
                    join_view["dimensions"].append(
                        {
                            "name": "label",
                            "type": "string",
                            "sql": "${TABLE}.key",
                            "hidden": metric_hidden,
                        },
                    )
                    view_definitions += [join_view]

        # deduplicate view definitions, because somehow a few entries make it in
        # twice e.g. metrics__metrics__labeled_counter__media_audio_init_failure
        view_definitions = sorted(
            {v["name"]: v for v in view_definitions}.values(), key=lambda x: x["name"]  # type: ignore
        )

        [project, dataset, table] = table.split(".")
        table_schema = dryrun.create(
            project=project,
            dataset=dataset,
            table=table,
        ).get_table_schema()
        nested_views = lookml_utils._generate_nested_dimension_views(
            table_schema, self.name
        )

        lookml["views"] += view_definitions + nested_views

        return lookml