def to_lookml()

in generator/dashboards/operational_monitoring_dashboard.py [0:0]


    def to_lookml(self):
        """Get this dashboard as LookML."""
        kwargs = {
            "name": self.name,
            "title": self.title,
            "layout": self.layout,
            "elements": [],
            "dimensions": [],
            "group_by_dimension": self.group_by_dimension,
            "alerts": None,
            "compact_visualization": self.compact_visualization,
        }

        includes = []
        graph_index = 0
        for table_defn in self.tables:
            explore = table_defn["explore"]
            includes.append(
                f"/looker-hub/{self.namespace}/explores/{explore}.explore.lkml"
            )

            if table_defn["table"].endswith("alerts"):
                kwargs["alerts"] = {
                    "explore": explore,
                    "col": 0,
                    "date": (
                        f"{self.xaxis}_date" if self.xaxis == "build_id" else self.xaxis
                    ),
                }
            else:
                if len(kwargs["dimensions"]) == 0:
                    kwargs["dimensions"] = [
                        {
                            "name": name,
                            "title": lookml_utils.slug_to_title(name),
                            "default": info["default"],
                            "options": info["options"],
                        }
                        for name, info in self.dimensions.items()
                    ]

                series_colors = self._map_series_to_colours(
                    table_defn["branches"], explore
                )
                # determine metric groups
                metric_groups = {}
                for summary in table_defn.get("summaries", []):
                    for metric_group in summary.get("metric_groups", []):
                        if metric_group not in metric_groups:
                            metric_groups[metric_group] = [summary["metric"]]
                        elif summary["metric"] not in metric_groups[metric_group]:
                            metric_groups[metric_group].append(summary["metric"])

                seen_metric_groups = []
                for summary in table_defn.get("summaries", []):
                    summary_metric_groups = summary.get("metric_groups", [])
                    if len(summary_metric_groups) == 0:
                        # append a dummy entry if no metric group defined
                        summary_metric_groups.append(None)

                    for metric_group in summary_metric_groups:
                        if (metric_group, summary["statistic"]) in seen_metric_groups:
                            continue

                        if self.compact_visualization:
                            title = "Metric"
                        else:
                            if metric_group is None:
                                title = lookml_utils.slug_to_title(summary["metric"])
                            else:
                                title = lookml_utils.slug_to_title(metric_group)

                        if not self.group_by_dimension:
                            kwargs["elements"].append(
                                {
                                    "title": title,
                                    "metric": (
                                        summary["metric"]
                                        if metric_group is None
                                        else ", ".join(
                                            f'"{m}"'
                                            for m in metric_groups[metric_group]
                                        )
                                    ),
                                    "statistic": summary["statistic"],
                                    "explore": explore,
                                    "series_colors": series_colors,
                                    "xaxis": self.xaxis,
                                    "row": int(graph_index / 2) * 10,
                                    "col": 0 if graph_index % 2 == 0 else 12,
                                    "is_metric_group": metric_group is not None,
                                }
                            )
                            if metric_group is not None:
                                seen_metric_groups.append(
                                    (metric_group, summary["statistic"])
                                )
                            graph_index += 1

                        if self.group_by_dimension:
                            kwargs["elements"].append(
                                {
                                    "title": f"{title} - By {self.group_by_dimension}",
                                    "metric": (
                                        summary["metric"]
                                        if metric_group is None
                                        else ", ".join(
                                            f'"{m}"'
                                            for m in metric_groups[metric_group]
                                        )
                                    ),
                                    "statistic": summary["statistic"],
                                    "explore": explore,
                                    "series_colors": series_colors,
                                    "xaxis": self.xaxis,
                                    "row": int(graph_index / 2) * 10,
                                    "col": 0 if graph_index % 2 == 0 else 12,
                                    "is_metric_group": metric_group is not None,
                                }
                            )
                            graph_index += 1

                        if self.compact_visualization:
                            # compact visualization only needs a single tile for all probes
                            break

                    if self.compact_visualization:
                        # compact visualization only needs a single tile for all probes
                        break

        if "alerts" in kwargs and kwargs["alerts"] is not None:
            kwargs["alerts"]["row"] = int(graph_index / 2) * 10

        dash_lookml = lookml_utils.render_template(
            "dashboard.lkml", "dashboards", **kwargs
        )
        return dash_lookml