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.

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.

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. 

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.

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");

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};

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.

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:

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:

DatentypFormatHinweis
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};