MAQL DDL
Multi-Dimension Analytical Query Language (MAQL) ist eine einfache und dennoch leistungsstarke Sprache, die für die Erstellung von GoodData-Berichten verwendet wird. Eine Erweiterung von MAQL, MAQL DDL (MAQL Data Definition Language) wird zum Erstellen und Ändern von Datenmodellen verwendet.
Die meisten MAQL DDL-Änderungen erfordern Aktualisierungen des zugrunde liegenden physischen Datenmodells durch den Befehl SYNCHRONIZE
. Ausnahmen:
- Ändern von Anzeigewerten
- Verwaltung von Ordnern
Änderungen am LDM können einen Kaskadeneffekt im gesamten Projekt bewirken, wenn man das Schlüsselwort CASCADE
verwendet. Abhängige Objekte werden ebenfalls mit CASCADE
verwendet. Wenn CASCADE
nicht verwendet wird, werden keine Fakten oder Attribute ausgegeben.
Um Löschungen von Daten aus synchronisierten Datensätzen zu vermeiden, müssen Sie das Schlüsselwort PRESERVE DATA
verwenden. PRESERVE DATA
funktioniert nur in Verbindung mit SYNCHRONIZE
. Wenn SYNCHRONIZE
ohne PRESERVE DATA
verwendet wird, löscht es Daten aus dem synchronisierten Datensatz. Weitere Informationen finden Sie in Synchronize.
Erste Schritte
Die DDL-Syntax ist einfach und den Datenbankbenutzern bekannt. Es gibt die folgenden drei Hauptbefehle:
- CREATE
- ALTER
- DROP
Diese Befehle können auf die folgenden Objekte angewandt werden, die ein Datenmodell bilden.
- Datensätze sind einzelne gemeinsame Datenquellen, die aus Attributen und Fakten bestehen.
- Attribute sind Datencontainer, die nicht wie alle Strings und einige numerische Spalten wie ID oder SSN hinzugefügt werden können.
- Fakten sind Datenspalten mit Berechnungsdaten, wie Preisen und Beträgen.
- Ordner werden verwendet, um Attribute und Fakten in einem GoodData-Projekt visuell für die Benutzer anzuordnen.
MAQL DDL über CloudConnect
Mit dem LDM Modeler in CloudConnect Designer können Sie Änderungen am Datenmodell vornehmen und diese Änderungen in Ihren GoodData-Projekten veröffentlichen. Wenn Sie anhand von CloudConnect Designer Änderungen vornehmen, werden diese in MAQL DDL-Befehle umgesetzt, wenn sie für Ihre GoodData-Projekte ausgeführt werden.
In CloudConnect Designer arbeiten Sie mit visuellen Tools zur Erstellung der DDL-Befehle. Gehen Sie im LDM Modeler auf die Registerkarte MAQL, um die ausgeführte MAQL DDL anzuzeigen. Die Tools zum Validieren des Modells in CloudConnect Designer vereinfachen das Ändern logischer Datenmodelle (LDMs).
Ausführliche Informationen siehe Data Modeling Using the CloudConnect Tool.
MAQL DDL über API
Um MAQL-Befehle direkt über die REST API-Benutzeroberfläche verwenden zu können, können Sie die folgende URL verwenden:
http://secure.gooddata.com/gdc/md/<project>/ldm/manage2
Ersetzen Sie den <Projekt>
-Wert durch Ihre GoodData-Projekt-ID. Sie können mehrere Befehle in das Textfeld eingeben. Diese werden dann gemeinsam als Teil einer einzigen Transaktion ausgeführt. Sollte einer der Befehle nicht ausgeführt werden können, werden alle nicht angewendet (Rückgängig machen).
Identifikatoren
In den nachstehenden Beispielen von MAQL-Skripten bezeichnen in Klammern {geschweiften Klammern} eingeschlossene Begriffe Identifikatoren. Sie sind vergleichbar mit für den Menschen lesbaren IDs, die Sie Objekten zuweisen und auf die Sie in anderen Objekten verweisen können.
Nachdem Sie ein Objekt erstellt haben, kann der Identifikator nicht mehr geändert werden. Für Identifikatoren können Sie Ihre eigenen Namenskonventionen auswählen. Identifikatoren können alphanumerische Zeichen, Unterstriche und Punkte (d. h. [A-Za-z0-9_.]
) enthalten.
In den nachstehenden Beispielen geht den Identifikatoren oft eine Vorsilbe wie „folder.“, „fact.“ usw. voraus.
Die Namen für Datenspalten-Identifikatoren müssen an einer bestimmten Namenskonvention Orientiert sein. Diese Identifikatoren verweisen auf bestimmte Datenspalten in Datendateien, die Sie über die API zum Hochladen hochladen und die in 3NF strukturiert sind. Die Identifikatoren müssen die Form von file.column
annehmen. Der file
-Teil entspricht der Datendatei, während column einer bestimmten Spalte entspricht. Alle Spalten, die in 3NF eine gemeinsame Datei verwenden, müssen in ihren Identifikatoren auch dieselbe Vorsilbe aufweisen. In den folgenden Beispielen sind Identifikatoren von Datenspalten hervorgehoben.
Synchronize
Alle Befehle modifizieren das logische Datenmodell, das die formelle Darstellung Ihrer Daten bestimmt. Dieser Abstraktionsschicht liegt ein physisches Datenmodell zugrunde, das GoodData für Berechnungen verwendet.
Nach Anwendung von Änderungen durch MAQL DDL rufen Sie den Befehl SYNCHRONIZE
auf, um die entsprechenden Änderungen auf das physische Datenmodell vorzunehmen. Visuelle Änderungen (Namen, Beschreibungen, Zugehörigkeit zu Ordnern) brauchen nicht mit dem physischen Datenmodell synchronisiert zu werden.
Immer wenn Sie das Schlüsselwort SYNCHRONIZE
verwenden, müssen Sie das Schlüsselwort PRESERVE DATA
hinzufügen. So können Sie versuchen, zu verhindern, dass Daten aus Ihrem Projekt entfernt werden.
SYNCHRONIZE {dataset.one}, {dataset.two} PRESERVE DATA;
Dataset
Dataset ist ein mit Namen versehener Container für Attribute und Fakten.
CREATE DATASET
CREATE DATASET {dataset.quotes} VISUAL (TITLE "Stock Quotes Data");
ALTER DATASET
Attribut/Fakt hinzufügen
ALTER DATASET {dataset.quotes} ADD {attribute.sector};
Attribut/Fakt entfernen
ALTER ATTRIBUTE {attr.players.age} DROP KEYS {d_players_age.id}, {f_players.age_id};
ALTER DATASET {dataset.players} DROP {attr.players.age};
DROP {attr.players.age};
SYNCHRONIZE {dataset.players} PRESERVE DATA;
Ändern Sie den Namen des Datensatzes.
ALTER DATASET {dataset.quotes} VISUAL(TITLE "Internal Quotes Data");
Ein Attribut oder ein Fakt muss zu einem Datensatz gehören. Ist dies nicht der Fall, schlägt die Projektvalidierung fehl.
Datumsdimension
GoodData bietet einen vorbereiteten Datumsdimensions-Datensatz. Sie können diese in MAQL DDL verwenden, wenn Sie das logische Datenmodell Ihres Projekts erstellen.
Datumsdimension importieren
Wenn Sie nur eine Datumsdimension in Ihrem Projekt brauchen, führen Sie die folgenden Befehle aus:
INCLUDE TEMPLATE "URN:GOODDATA:DATE";
ALTER ATTRIBUTE {date} ADD KEYS {f_quotes.date};
Der erste Befehl importiert den Datensatz in das Projekt, der zweite fügt es zur Faktentabelle f_quotes
hinzu.
Um mehrere Datumsdimensionen zu verwenden kennzeichnen Sie diese durch einen speziellen Identifikator (zu technischen Zwecken) und einen Titel (zu visuellen Zwecken).
INCLUDE TEMPLATE "URN:GOODDATA:DATE" MODIFY (IDENTIFIER "born", TITLE "Born");
ALTER ATTRIBUTE {born.date} ADD KEYS {f_players.dt_born};
Um die Datumsdimension ordnungsgemäß zur Faktentabelle hinzuzufügen, müssen Sie den Befehl SYNCHRONIZE für den entsprechenden Datensatz aufrufen.
Aktualisieren der Datumsdimension
Wenn Sie fiskalische Kalender verwenden, können zeitweilig neue Versionen der Vorlage freigegeben werden. In diesem Fall müssen Sie alle Datumsdimensionen in Ihren erstellten Projekten aus dieser Vorlage heraus aktualisieren.
UPDATE TEMPLATE "URN:FISCALAPR1:DATE" WITH DATA;
Attribut
Attribute sind Einheiten, die Ihnen erlauben, anzugeben, wie Ihre Daten aggregiert (oder aufgeschlüsselt) werden, zum Beispiel Assignee, City, Day, ID, Group.
Attribute können optional zusätzliche Bezeichnungen erhalten. Hierbei handelt es sich um alternative String-Darstellungen desselben semantischen Werts. Eine Person “Max Mustermann” ist dieselbe Person, unabhängig davon, ob sie als “M. Mustermann”, “Mustermann, Max” oder etwa “Max” dargestellt wird.
Per Standard haben Attribute eine Länge von 128 Zeichen. Sie können die Länge eines Attributs auf bis zu 10000 Zeichen ändern. Weitere Informationen finden Sie unter Changing the Length of Attribute Labels.
CREATE ATTRIBUTE
CREATE ATTRIBUTE {attr.quotes.symbol} VISUAL(TITLE "Symbol", FOLDER {folder.quotes.attr}) AS {d_quotes_symbol.nm_symbol};
ALTER ATTRIBUTE
ALTER ATTRIBUTE {attr.quotes.symbol} ADD LABELS {attr.quotes.company} VISUAL(TITLE "Company") AS {d_quotes_symbol.nm_company};
DEFAULT LABEL
Wenn Sie einem Attribut weitere Bezeichnungen zugeordnet haben, können Sie angeben, welches die standardmäßige Attributsbezeichnung ist. Wenn Sie ein Attribut mit mehreren Bezeichnungen erstellen, wird die erste Bezeichnung aus der Liste als standardmäßige zugeordnet.
Verwenden Sie die Attributssyntax Alter, um die Standardbezeichnung zu ändern.
CREATE ATTRIBUTE {attr.quotes.attribute} AS LABELS {attr.quotes.label1} VISUAL(TITLE "Label 1"), {attr.quotes.label2};
ALTER ATTRIBUTE {attr.quotes.attribute} DEFAULT LABEL {attr.quotes.label2};
HYPERLINK LABEL
Um Bezeichnungen in Berichten mit einem Link anzuzeigen, müssen Sie den Bezeichnungen Hyperlinks hinzufügen:
CREATE ATTRIBUTE {attr.quotes.attribute} AS LABELS {attr.quotes.label1} VISUAL(TITLE "Hyperlink") HYPERLINK;
ALTER ATTRIBUTE {attr.quotes.attribute} DEFAULT ALTER LABELS {attr.quotes.label1} HYPERLINK;
SORTING BY LABEL
Attribute können Sie nach Bezeichnungen sortieren. Verwenden Sie zum Erstellen und Anordnen von Bezeichnungen den folgenden Code und geben Sie mit dem folgende Code den Anordnungstyp (ASC/DESC) an:
CREATE ATTRIBUTE {attr.quotes.attribute} AS LABELS {attr.quotes.label1} VISUAL(TITLE "Label 1") ORDER {attr.quotes.label1} ASC;
ALTER ATTRIBUTE {attr.quotes.attribute} ORDER BY {attr.quotes.label1} DESC;
Fakt
CREATE FACT
CREATE FACT {fact.quotes.open_price} VISUAL( TITLE "Open Price", FOLDER {folder.quotes.fact})
AS {f_quotes.f_open_price};
ALTER FACT
ALTER FACT {fact.quotes.open_price} ADD {f_quotes2.f_open_price};
Ordner
Ordner werden verwendet, um Fakten oder Attribute und Metriken innerhalb des Projekts anzuordnen. Ordner sind Typen. Sie können nur Objekte einer Art enthalten.
CREATE FOLDER
CREATE FOLDER {folder.quotes.attr} VISUAL ( TITLE "Stock Quotes Data", DESCRIPTION "Stock quotes data obtained from John Doe etc." )
TYPE ATTRIBUTE;
ALTER FOLDER
Ordner werden bei der Erstellung und Änderung der Attribute, Metriken und Fakten ausgefüllt. So ändern Sie den Objektnamen des Ordners:
ALTER FOLDER {folder.quotes.attr} VISUAL(TITLE "Quotes Attributes");
Leistungsoptimierung
Mit den folgenden Techniken können Sie das Datenmodell leistungsbezogen optimieren:
Die Leistungsoptimierung für Ihr spezielles Modell erfordert Erfahrung im Erstellen von Datenmodellen und besonders Erfahrung im Erstellen von Modellen bei GoodData. Einzelheiten erfahren Sie bei Ihrem GoodData Customer Support.
DATATYPE angeben
Per Standard speichert der Datamart automatisch alle Fakten als Dezimalstellen (12,2) und alle Attribute als Zeichenfolgen mit 128 Zeichen. Aus Gründen der Leistung oder um andere Datenarten zu speichern, können Sie Ihren Spaltendatentyp neu definieren:
ALTER
DATATYPE {d_quotes_symbol.nm_symbol} VARCHAR(4),
{d_quotes_symbol.nm_symbol} VARCHAR(80), {f_quotes.f_open_price}
DECIMAL(10,2);
Unterstützte Datentypen sind:
Datentyp | Format | Hinweis |
---|---|---|
VARCHAR (N) | N (1..10000) | |
DECIMAL (M,D) | M min(-1e+20) max(1e+20),D max = 6. Maximal zulässig sind M<=50, aber das wirkt sich negativ auf die Leistung aus. Lassen Sie daher immer D<M. | |
INT | min(-2147483648) max(2147483647) | |
BIGINT | min(-1e+15) max(1e+15) | |
DATE | ‘YYYY-MM-DD’ | |
DOUBLE | discouraged |
Der Datentyp DATE stimmt automatisch mit der von GoodData bereitgestellten Datumsdimension überein, wenn Sie diese zuvor in das Projekt einbezogen haben:
INCLUDE TEMPLATE "URN:GOODDATA:DATE" MODIFY (IDENTIFIER "my-date", TITLE "quote");
Spalten mit mehreren Fakten erstellen
Im folgenden Beispiel hat der Fakt fact.quotes.open_price
bereits eine Faktspalte f_quotes.f_open_price
. Aus Leistungsgründen können Sie jedoch in f_quotes2
eine identische Spalte hinzufügen:
ALTER FACT {fact.quotes.open_price} ADD {f_quotes2.f_open_price};