Ab Looker 24.0 können Erweiterungen so entwickelt werden, dass sie in einem Tile in Dashboards ausgeführt werden. Erweiterungen, die als Tile oder Visualisierung ausgeführt werden können, können hinzugefügt werden, während sich das Dashboard im Bearbeitungsmodus befindet. Sie können auch als Visualisierung aus einem Explore in einem Dashboard gespeichert werden. Erweiterungen können auch als Tiles in LookML-Dashboards konfiguriert werden.
Beispiele für Erweiterungen, die als Dashboard-Tiles verwendet werden können, sind verfügbar:
- Die Erweiterung für die Tile-Visualisierung zeigt, wie Sie mit dem Erweiterungs-Framework eine benutzerdefinierte Visualisierung erstellen.
- Die Erweiterung für das Tile-SDK zeigt die verfügbaren API-Methoden, die speziell für Tile-Erweiterungen gelten.
Looker Extension SDK mit Tile-Erweiterungen verwenden
Für Tile-Erweiterungen muss der mount_points Parameter in der Manifestdatei des LookML-Projekts definiert sein, damit Erweiterungen als Tiles in ein Dashboard geladen werden können. Es gibt zwei Arten von mount_points für Tile-Erweiterungen:
mount_points: {
dashboard_vis: yes
dashboard_tile: yes
standalone: yes
}
dashboard_vis— Wenn diese Option aktiviert ist, wird die Erweiterung in den Visualisierungsoptionen eines Explore angezeigt. Dort kann sie als Visualisierung ausgewählt und als Dashboard-Tile gespeichert werden. Wenn das Dashboard ausgeführt wird, wird die mit dem Tile verknüpfte Abfrage ausgeführt und die Daten werden der Erweiterung zur Verfügung gestellt. Das funktioniert ähnlich wie bei benutzerdefinierten Visualisierungen. Der Hauptunterschied zwischen einer benutzerdefinierten Visualisierung und einer Erweiterung, die in einem Dashboard-Tile mit aktivierter Optiondashboard_visausgeführt wird, besteht darin, dass die Erweiterung Looker API-Aufrufe ausführen kann.dashboard_tile— Wenn diese Option aktiviert ist, wird die Erweiterung im Erweiterungen Bereich angezeigt, der eingeblendet wird, wenn ein Nutzer ein Dashboard bearbeitet und nach dem Klicken auf die Schaltbare Hinzufügen die Option Erweiterungen auswählt. Diese Art von Erweiterung ruft ihre eigenen Daten ab, anstatt dass die Tile-Abfrage die Erweiterung automatisch mit Daten versorgt.
Ein zusätzlicher Bereitstellungspunkt, standalone, bewirkt, dass die Erweiterung im Hauptmenü von Looker unter Anwendungen angezeigt wird. Für eine Erweiterung können mehrere Mount-Points definiert sein. Zur Laufzeit wird die Erweiterung darüber informiert, wie sie eingebunden ist, und sie kann ihr Verhalten entsprechend anpassen. Beispielsweise müssen standalone Erweiterungen ihre eigene Höhe festlegen, Tile-Erweiterungen jedoch nicht.
Zusätzliche APIs für Tile-Erweiterungen
Tile-Erweiterungen werden zur Laufzeit mit zusätzlichen APIs und Daten bereitgestellt. Diese werden aus dem Erweiterungskontext abgerufen:
const {
tileSDK,
tileHostData,
visualizationData,
visualizationSDK,
} = useContext(ExtensionContext40)
tileSDK: Bietet Tile-spezifische Funktionen, mit denen die Erweiterung mit dem Looker-Dashboard-Host interagieren kann. Beispielsweise kann die Erweiterung so Fehlermeldungen anzeigen und löschen.tileHostData: Stellt der Erweiterung Tile-Daten zur Verfügung. Die Daten werden automatisch basierend auf Interaktionen mit dem Hosting-Dashboard aktualisiert. Ein Beispiel ist der IndikatorisDashboardEditing.visualizationSDK: Bietet Visualisierungs-spezifische Funktionen, mit denen die Erweiterung mit dem Looker-Dashboard-Host interagieren kann. Ein Beispiel ist die FunktionupdateRowLimit.visualizationData: Stellt der Erweiterung Visualisierungsdaten zur Verfügung. Die Daten werden automatisch basierend auf Interaktionen mit dem Hosting-Dashboard aktualisiert. Die Daten ähneln den Daten, die für benutzerdefinierte Visualisierungen bereitgestellt werden.
Reaktive Erweiterungen erstellen
Die IFrames, in denen Erweiterungen ausgeführt werden, werden automatisch angepasst, wenn die Größe des übergeordneten Looker-Hostfensters geändert wird. Dies wird automatisch im Fenster mit den IFrame-Inhalten widergespiegelt. Die IFrame-Komponente hat keinen Innen- oder Außenabstand. Daher muss die Erweiterung ihren eigenen Innen- und Außenabstand bereitstellen, damit sie mit der Looker-Anwendung übereinstimmt. Bei eigenständigen Erweiterungen muss die Erweiterung die Höhe selbst steuern. Bei Erweiterungen, die in Dashboard-Tiles oder Explore-Visualisierungen ausgeführt werden, wird die Höhe des Fensters mit den IFrame-Inhalten automatisch auf die Höhe festgelegt, die vom IFrame zur Verfügung gestellt wird.
Überlegungen zum Rendering
Tile-Erweiterungen werden gerendert, wenn ein Dashboard als PDF oder Bild heruntergeladen wird. Der Renderer erwartet, dass das Tile ihn benachrichtigt, wenn das Rendering abgeschlossen ist. Wenn dies nicht geschieht, reagiert der Renderer nicht mehr. Im Folgenden sehen Sie ein Beispiel dafür, wie Sie den Renderer benachrichtigen, dass das Tile gerendert wurde.
const { extensionSDK } = useContext(ExtensionContext40)
useEffect(() => {
extensionSDK.rendered()
}, [])
Animationen sollten beim Rendering ebenfalls deaktiviert werden. Im folgenden Beispiel werden die Animationskonfigurationen beim Rendering deaktiviert:
const { lookerHostData} = useContext(ExtensionContext40)
const isRendering = lookerHostData?.isRendering
const config = isRendering
? {
...visConfig,
valueCountUp: false,
waveAnimateTime: 0,
waveRiseTime: 0,
waveAnimate: false,
waveRise: false,
}
: visConfig
if (mountPoint === MountPoint.dashboardVisualization) {
return <VisualizationTile config={config} />
}
Funktionen und Attribute des Tile-SDK
Das Tile-SDK bietet Funktionen, mit denen eine Tile-Erweiterung mit dem Hosting-Dashboard interagieren kann.
Die verfügbaren Funktionen und Attribute sind in der folgenden Tabelle aufgeführt:
| Funktion oder Attribut | Beschreibung |
|---|---|
tileHostData (Attribut) |
Hostdaten, die spezifisch für die Tile-Erweiterung sind. Weitere Informationen finden Sie im Abschnitt Tile-SDK-Daten. |
addError |
Wenn diese Funktion aufgerufen wird, wird im Dashboard oder Explore unter der Visualisierung eine Fehlermeldung angezeigt. |
clearError |
Wenn diese Funktion aufgerufen wird, werden im Dashboard oder Explore alle Fehlermeldungen unter der Visualisierung ausgeblendet. |
openDrillMenu |
Bei Visualisierungserweiterungen wird mit diesem Aufruf ein Drill-Menü geöffnet. Dieser Aufruf wird ignoriert, wenn die Erweiterung keine Tile-Erweiterungsvisualisierung ist. |
runDashboard |
Führt das aktuelle Dashboard aus. Dieser Aufruf wird von einer Tile-Visualisierungserweiterung, die in einem Explore ausgeführt wird, ignoriert. |
stopDashboard |
Beendet ein laufendes Dashboard. Dieser Aufruf wird von einer Tile-Visualisierungserweiterung, die in einem Explore ausgeführt wird, ignoriert. |
updateFilters |
Aktualisiert Filter im aktuellen Dashboard oder Explore. |
openScheduleDialog |
Öffnet das Dialogfeld „Zeitplan“. Dieser Aufruf wird ignoriert, wenn er in einem Explore ausgeführt wird. |
toggleCrossFilter |
Schaltet Kreuzfilter ein oder aus. Dieser Aufruf wird ignoriert, wenn er in einem Explore ausgeführt wird. |
Tile-SDK-Daten
Die verfügbaren Attribute für Tile-SDK-Daten sind in der folgenden Tabelle aufgeführt:
| Attribut | Beschreibung |
|---|---|
isExploring |
Wenn „true“, gibt an, dass das Tile als Visualisierung in einem Explore konfiguriert wird. |
dashboardId |
Die Dashboard-ID des Tiles, das gerendert wird. Wenn das Tile als Explore konfiguriert wird, wird dieses Attribut nicht ausgefüllt. |
elementId |
Die Element-ID des Tiles, das gerendert wird. Wenn das Tile als Explore konfiguriert wird, wird dieses Attribut nicht ausgefüllt. |
queryId |
Die Abfrage-ID des Tiles, das gerendert wird, wenn es mit einer Visualisierung verknüpft ist. Wenn das Tile als Explore konfiguriert wird, wird dieses Attribut nicht ausgefüllt.queryId ist die ID der Abfrage, die erstellt wird, wenn die Visualisierung in Looker Explore erstellt wird. Sie enthält keine Filter oder Kreuzfilter, die auf das Dashboard angewendet werden sollen. Damit die in der QueryResponse angezeigten Daten widergespiegelt werden, müssen Filter und Kreuzfilter angewendet und eine neue Abfrage generiert werden. Daher gibt es möglicherweise nützlichere Attribute als queryId. Unter filteredQuery finden Sie ein Abfrageobjekt mit angewendeten Filtern. |
querySlug |
Der Abfrage-Slug des Tiles, das gerendert wird, wenn es mit einer Visualisierung verknüpft ist. Wenn das Tile als Explore konfiguriert wird, wird dieses Attribut nicht ausgefüllt.querySlug ist ein Slug der Abfrage, die erstellt wird, wenn die Visualisierung in Looker Explore erstellt wird. Sie enthält keine Filter oder Kreuzfilter, die auf das Dashboard angewendet werden. Damit die in der QueryResponse angezeigten Daten widergespiegelt werden, müssen Filter und Kreuzfilter angewendet und eine neue Abfrage generiert werden. Daher gibt es möglicherweise nützlichere Attribute als querySlug. Unter filteredQuery finden Sie ein Abfrageobjekt mit angewendeten Filtern. |
dashboardFilters |
Die Filter, die auf das Dashboard angewendet werden. Wenn das Tile als Explore konfiguriert wird, wird dieses Attribut nicht ausgefüllt. |
dashboardRunState |
Gibt an, ob das Dashboard ausgeführt wird. Wenn das Tile als Explore konfiguriert wird, ist der Status UNKNOWN.Aus Gründen der Dashboard-Leistung wird der Ausführungsstatus möglicherweise nie als „running“ angezeigt. Das ist in der Regel der Fall, wenn keine anderen Tiles mit einer Abfrage verknüpft sind, einschließlich des Tiles, mit dem die Erweiterung verknüpft ist. Wenn die Erweiterung sicher wissen muss, dass ein Dashboard ausgeführt wurde, ist das Erkennen von Unterschieden in lastRunStartTime die zuverlässige Methode. |
isDashboardEditing |
Wenn „true“, wird das Dashboard bearbeitet. Wenn das Tile als Explore konfiguriert wird, wird dieses Attribut nicht ausgefüllt. |
isDashboardCrossFilteringEnabled |
Wenn „true“, ist die Kreuzfilterung im Dashboard aktiviert. Wenn das Tile als Explore konfiguriert wird, wird dieses Attribut nicht ausgefüllt. |
filteredQuery |
Ein Abfrageobjekt, das mit der Abfrage-ID übereinstimmt, die mit dem zugrunde liegenden Dashboard-Element verknüpft ist. Es wendet alle Dashboard-Filter und Zeitzonenänderungen an, die auf Dashboard-Ebene vorgenommen wurden. |
lastRunSourceElementId |
Die ID des Tile-Erweiterungselements, das die letzte Dashboard-Ausführung ausgelöst hat. Die ID ist nicht definiert, wenn die Dashboard-Ausführung durch die Schaltfläche Ausführen oder die automatische Aktualisierung ausgelöst wurde oder wenn die Ausführung mit dem Embed SDK ausgelöst wurde. Wenn das Tile als Explore konfiguriert wird, wird dieses Attribut nicht ausgefüllt.Beachten Sie, dass lastRunSourceElementId mit der Element-ID der aktuellen Erweiterungsinstanz identisch sein kann. Wenn die Erweiterung beispielsweise eine Dashboard-Ausführung auslöst, wird sie benachrichtigt, wenn die Dashboard-Ausführung gestartet und beendet wird. |
lastRunStartTime |
Gibt die Startzeit der letzten Dashboard-Ausführung an. Wenn das Tile als Explore konfiguriert wird, wird dieses Attribut nicht ausgefüllt.Die gemeldeten Start- und Endzeiten sollten nicht zum Erfassen von Leistungsmesswerten verwendet werden. |
lastRunEndTime |
Gibt die Endzeit der letzten Dashboard-Ausführung an. Wenn das Tile als Explore konfiguriert wird, wird dieses Attribut nicht ausgefüllt. Wenn das Tile ausgeführt wird, wird dieses Attribut nicht ausgefüllt.Die gemeldeten Start- und Endzeiten sollten nicht zum Erfassen von Leistungsmesswerten verwendet werden. |
lastRunSuccess |
Gibt an, ob die letzte Dashboard-Ausführung erfolgreich war. Wenn das Tile als Explore konfiguriert wird, wird dieses Attribut nicht ausgefüllt. Wenn das Tile ausgeführt wird, wird dieses Attribut nicht ausgefüllt. |
Funktionen und Attribute des Visualisierungs-SDK
Die verfügbaren Funktionen und Attribute des Visualisierungs-SDK sind in der folgenden Tabelle aufgeführt:
| Funktion oder Attribut | Beschreibung |
|---|---|
visualizationData (Attribut) |
Visualisierung (Kombination aus visConfig\- und queryResponse-Daten). |
visConfig (Attribut) |
Visualisierungskonfigurationsdaten:
|
queryResponse (Attribut) |
Antwortdaten aus der Abfrage |
configureVisualization |
Legt die Standardkonfiguration für eine Erweiterungsvisualisierung fest. Die Konfiguration wird im Visualisierungseditor von Explore gerendert. Diese Funktion sollte nur einmal aufgerufen werden. |
setVisConfig |
Aktualisiert die Visualisierungskonfiguration. |
updateRowLimit |
Aktualisiert das Zeilenlimit der Abfrage. |
Visualisierungs-SDK-Daten
Das Visualisierungs-SDK besteht aus folgenden Komponenten:
- Visualisierungskonfigurationsdaten
- Daten zur Abfrageantwort
Visualisierungskonfigurationsdaten
| Attribut | Beschreibung |
|---|---|
queryFieldMeasures |
Messwertinformationen |
queryFieldDimensions |
Dimensionsinformationen |
queryFieldTableCalculations |
Informationen zu Tabellenkalkulationen |
queryFieldPivots |
Pivot-Informationen |
visConfig |
Daten zur visuellen Konfiguration. Diese sollten mit der Standardkonfiguration zusammengeführt und auf die von der Erweiterung gerenderte Visualisierung angewendet werden. |
export interface VisualizationConfig {
queryFieldMeasures: Measure[]
queryFieldDimensions: Dimension[]
queryFieldTableCalculations: TableCalculation[]
queryFieldPivots: PivotConfig[]
visConfig: RawVisConfig
}
Daten zur Abfrageantwort
| Attribut | Beschreibung |
|---|---|
data |
Array mit Zeilendaten |
fieldMeasures |
Informationen zu Feldmesswerten. |
fieldDimensions |
Informationen zu Felddimensionen. |
fieldTableCalculations |
Informationen zu Tabellenkalkulationen für Felder. |
fieldPivots |
Informationen zu Feld-Pivots. |
fieldMeasureLike |
Ein verkettetes Array mit Informationen zu Feldmesswerten und Tabellenkalkulationen, die sich wie Messwerte verhalten. |
fieldDimensionLike |
Ein verkettetes Array mit Informationen zu Felddimensionen und Tabellenkalkulationen, die sich wie Dimensionen verhalten. |
Embed SDK verwenden
Die Verwendung des Embed SDK in einer Tile-Erweiterung wird aus folgenden Gründen nicht empfohlen:
- Es ist möglich, dass die Erweiterung ein Dashboard rendert, in dem die Erweiterung ein Tile ist. Das Erweiterungs-Framework kann dies nicht erkennen und der Browser kann abstürzen.
- Das PDF-Rendering von eingebetteten Inhalten in einer Tile-Erweiterung funktioniert nicht.