MAQL DDL

El lenguaje de consulta analítico multidimensional, (MAQL, del inglés Multi-Dimension Analytical Query Language) es un lenguaje de consulta sencillo a la par que eficaz utilizado en los informes GoodData. La extensión MAQL DDL (Lenguaje de definición de datos MAQL) de MAQL se utiliza para crear y modificar los modelos de datos.

Introducción

La sintaxis de DDL es sencilla y conocida para los usuarios de bases de datos. Hay tres comandos principales:

  • CREATE
  • ALTER
  • DROP

Estos comandos se pueden aplicar a los siguientes objetos que forman el modelo de datos:

  • Los conjuntos de datos son fuentes de datos únicos que consisten en atributos y hechos.
  • Los atributos son contenedores de datos que no se pueden agregar como todas las cadenas y algunas columnas numéricas como ID o SSN
  • Los hechos son columnas de datos que contienen datos computacionales, como precios e importes.
  • Las carpetas se utilizan para organizar visualmente los atributos y hechos para los usuarios de un proyecto GoodData

MAQL DDL mediante CloudConnect

Mediante el LDM Modeler de CloudConnect Designer, puede realizar modificaciones en el modelo de datos y publicar estos cambios en sus proyectos GoodData. Cuando se efectúan cambios mediante CloudConnect Designer, estos se convierten en comandos MAQL DLL cuando se ejecutan frente a sus proyectos GoodData.

Para más información, vea Data Modeling Using the CloudConnect Tool.

MAQL DDL mediante API

Para utilizar directamente los comandos MAQL mediante la interfaz API de REST, utilice la siguiente URL:

http://secure.gooddata.com/gdc/md/<project>/ldm/manage2

Sustituya el valor <project> con el ID del proyecto de GoodData. Puede escribir múltiples comandos en el campo de texto. Se ejecutan todos juntos como parte de una sola transacción. Si alguno de ellos falla, no se aplica ninguno (revertir).

Identificadores

En los scripts MAQL de muestra que se indican a continuación, los términos entre {paréntesis} son identificadores. Debe considerarlos como ID legibles por el ser humano que puede asignar a objetos y hacer referencia a ellos en otros objetos.

Una vez que se ha creado un objeto, el identificador no se puede modificar. Puede seleccionar sus propias convenciones de nomenclatura para los identificadores. Los identificadores pueden contener caracteres alfanuméricos, subrayado y punto (es decir, [A-Za-z0-9_.]).

 En los ejemplos siguientes, los identificadores se nombran con un prefijo “carpeta.”, “hecho.” etc. 

Sincronizar

Todos los comandos modifican el modelo lógico de datos, que define la representación formal de los datos. Por debajo de este nivel de abstracción hay un modelo físico de datos que GoodData utiliza para efectuar los cálculos.

Tras aplicar los cambios mediante MAQL DDL, inicie el comando SYNCHRONIZE para aplicar los cambios correspondientes al modelo físico de datos. Los cambios visuales (nombres, descripciones, pertenencia en carpetas) no tienen que sincronizarse con el modelo físico.

SYNCHRONIZE {dataset.one}, {dataset.two} PRESERVE DATA;

Conjunto de datos

El conjunto de datos es un contenedor con un nombre para los atributos y los hechos.

CREATE DATASET

CREATE DATASET {dataset.quotes} VISUAL (TITLE "Stock Quotes Data");

ALTER DATASET

Agregar atributo/hecho

ALTER DATASET {dataset.quotes} ADD {attribute.sector};

Quitar atributo/hecho

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;

Cambiar el nombre del conjunto de datos

ALTER DATASET {dataset.quotes} VISUAL(TITLE "Internal Quotes Data");

Dimensión de la fecha

GoodData ofrece un conjunto de datos de dimensión de fecha preparado. Puede utilizarlo en MAQL DDL cuando cree o cambie el modelo lógico de datos del proyecto.

Importar la dimensión de fecha

Si en su proyecto solo necesita una dimensión de fecha, ejecute los siguientes comandos:

INCLUDE TEMPLATE "URN:GOODDATA:DATE";
ALTER ATTRIBUTE {date} ADD KEYS {f_quotes.date};

El primer comando importa el conjunto de datos en el proyecto, el segundo lo une con la tabla de hechos f_quotes.

Para usar múltiples dimensiones de fecha, puede distinguirlas mediante un identificador especial (para fines técnicos) y un título (para fines visuales).

INCLUDE TEMPLATE "URN:GOODDATA:DATE" MODIFY (IDENTIFIER "born", TITLE "Born");
ALTER ATTRIBUTE {born.date} ADD KEYS {f_players.dt_born};

Actualizar la dimensión de fecha

Cuando se utilizan calendarios fiscales, se pueden lanzar nuevas versiones de la plantilla de forma intermitente. Cuando esto ocurre, actualice todas las dimensiones de fecha de los proyectos que se han creado a partir de dicha plantilla.

UPDATE TEMPLATE "URN:FISCALAPR1:DATE" WITH DATA;

Atributo

Los atributos son unidades que permiten especificar cómo se agregan (o segmentan) los datos, como Cesionario, Ciudad, Día, ID, Grupo.

Los atributos pueden tener, opcionalmente, etiquetas adicionales. Son representaciones alternativas de la cadena del mismo valor semántico. Por ejemplo, una persona llamada Luis Pérez es la misma persona aunque aparezca como “L. Pérez”, “Pérez, Luis”, “Luisito”, etc.

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

Si tiene etiquetas adicionales signadas a un atributo, puede especificar qué etiqueta de atributo es la predeterminada. Cuando se crea un atributo con múltiples etiquetas, la primera etiqueta de la lista se asigna como la predeterminada.

Para cambiar la etiqueta predeterminada, utilice la sintaxis del atributo Alter.

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

Para que en los informes, las etiquetas se muestren con enlaces, agregue hipervínculos a las etiquetas:

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

Puede ordenar los atributos por etiquetas. Para crear y ordenar etiquetas, use el siguiente código y especifique el tipo de clasificación (ASC/DESC):

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;

Hecho

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

Carpeta

Las carpetas se utilizan para organizar visualmente los hechos o atributos y métricas dentro del proyecto. Las carpetas son tipos; solo pueden contener objetos de un tipo.

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

Las carpetas se rellenan durante la creación y la modificación de atributos, métricas y hechos. Para modificar el nombre del objeto de la carpeta:

ALTER FOLDER {folder.quotes.attr} VISUAL(TITLE "Quotes Attributes");

Optimización del rendimiento

Utilice las siguientes técnicas para optimizar el modelo de datos para el rendimiento:

Especificar un DATATYPE

Como valor predeterminado, el datamart almacena automáticamente todos los hechos como decimales (12,2) y todos los atributos y etiquetas como cadenas de 128 caracteres. A efectos de rendimiento o para guardar otros tipos de datos, puede volver a definir el tipo de datos de la columna:

ALTER
 DATATYPE {d_quotes_symbol.nm_symbol} VARCHAR(4), 
{d_quotes_symbol.nm_symbol} VARCHAR(80), {f_quotes.f_open_price} 
DECIMAL(10,2);

 

Los tipos de datos admitidos son:

tipo de datosformanota
VARCHAR (N) N (1..10000)
DECIMAL (M,D) M min(-1e+20) max(1e+20), D max = 6. El máximo permitido es M<=50, pero afectará al rendimiento. Mantenga siempre D y M.
INT min(-2147483648) max(2147483647)
BIGINT min(-1e+15) max(1e+15)
DATE‘YYYY-MM-DD’ 
DOUBLE no recomendado

 El tipo de datos DATE se asigna automáticamente a la dimensión de fecha proporcionada por GoodData, si la ha incluido previamente en el proyecto:

INCLUDE TEMPLATE "URN:GOODDATA:DATE" MODIFY (IDENTIFIER "my-date", TITLE "quote");

Crea múltiples columnas de hecho

En el siguiente ejemplo, el hecho fact.quotes.open_price ya tiene una columna hecho f_quotes.f_open_price, pero a efectos de rendimiento, puede agregar una columna idéntica en f_quotes2:

ALTER FACT {fact.quotes.open_price} ADD {f_quotes2.f_open_price};