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.
La mayoría de cambios en MAQL DDL requieren la actualización del modelo físico de datos subyacente mediante el comando SYNCHRONIZE
. Excepciones:
- El cambio de los valores de visualización
- La gestión de las carpetas
Los cambios efectuados en el LDM pueden tener un efecto en cascada en todo el proyecto si se utiliza la palabra clave CASCADE
. Los objetos dependientes también se arrastran con CASCADE
. Si no se utiliza CASCADE
, no se arrastran ni los hechos ni los atributos.
Para evitar la eliminación de datos de los conjuntos de datos sincronizados, use la palabra clave PRESERVE DATA
. PRESERVE DATA
funciona solamente con SYNCHRONIZE
. Si SYNCHRONIZE
se ejecuta sin PRESERVE DATA
, se eliminan los datos del conjunto de datos sincronizado. Para más información, vea Sincronizar.
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.
En CloudConnect Designer, se trabaja con herramientas visuales para crear los comandos DDL. En el LDM Modeler, haga clic en la pestaña MAQL para visualizar el MQL DDL que se está ejecutando. Para las herramientas de validación del modelo en CloudConnect Designer, el lenguaje MQL DDL es el modo preferido de modificar los modelos lógicos de datos (LDM).
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.
Los nombres de los Identificadores de la columna Datos deben seguir una convención de nomenclatura especifica. Estos identificadores hacen referencia a columnas de datos específicas en los archivos de datos que ha cargado mediante la API de carga y se estructuran en 3NF. Los identificadores deben tener la forma de archivo.columna
. La parte de archivo
se corresponde con el archivo de datos, mientras que la columna se corresponde con una determinada columna. Todas las columnas que en 3NF comparten un archivo común deben compartir también el mismo prefijo en sus identificadores. En los ejemplos siguientes, los identificadores de la columna de datos están resaltados.
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.
Siempre que utilice la palabra clave SYNCHRONIZE
, agregue la palabra clave PRESERVE DATA
. Este término intenta evitar que no se eliminen los datos del proyecto.
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");
Un atributo o hecho debe pertenecer a un conjunto de datos. De no ser así, la validación del proyecto no es satisfactoria.
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};
Para unir correctamente la dimensión de fecha con la tabla de hechos, inicie el comando SYNCHRONIZE para el conjunto de datos correspondiente.
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.
Como valor predeterminado, los atributos tienen 128 caracteres de longitud. Puede cambiar la longitud de un atributo hasta los 10.000 caracteres. Para más información, vea 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
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:
La optimización del rendimiento de su modelo específico requiere experiencia en el modelado de datos y en el modelado en GoodData en particular. Para más información, póngase en contacto atención al cliente de GoodData.
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 datos | forma | nota |
---|---|---|
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};