MAQL DDL
A linguagem de consulta analítica multidimensional (MAQL) é uma linguagem de consulta simples, mas poderosa, usada em relatórios do GoodData. Uma extensão de MAQL, MAQL DDL (linguagem de definição de dados MAQL) é usada para a criação e modificação de modelos de dados.
A maioria das alterações de MAQL DDL exigem atualizações do modelo de dados físico subjacente com o comando SYNCHRONIZE
. Exceções:
- Alterando os valores de exibição
- Gerenciando pastas
Alterações no LDM podem ter efeito em cascata ao longo do projeto, usando a palavra-chave CASCADE
. Objetos dependentes também pode ser lançados como CASCADE
. Se CASCADE
não for usado, fatos ou atributos não serão lançados.
Para impedir exclusões de dados de conjunto de dados sincronizados, use a palavra-chave PRESERVE DATA
. PRESERVE DATA
funciona apenas com SYNCHRONIZE
. Se SYNCHRONIZE
for executado sem PRESERVE DATA
, exclui dados de um conjunto de dados sincronizado. Para obter mais informações, consulte Synchronize.
Guia Rápido
A sintaxe DDL é simples e familiar aos usuários de banco de dados. Existem três comandos principais:
- CREATE
- ALTER
- DROP
Esses comandos podem ser aplicados para os seguintes objetos que formam o modelo de dados:
- conjunto de dados são as únicas fontes comuns de dados consistindo de atributos e fatos.
- Atributos são recipientes de dados que não podem ser adicionados como todas as strings e algumas colunas numéricas como ID ou SSN
- Fatos são as colunas de dados contendo dados de cálculo, tais como os preços e quantidades.
- Pastas são usadas para organizar atributos e fatos visualmente para os usuários dentro de um projeto do GoodData
MAQL DDL via CloudConnect
Através do LDM Modeler no CloudConnect Designer, você pode fazer modificações em um modelo de dados e publicá-la em seus projetos do GoodData. Quando fizer alterações por meio do CloudConnect Designer, elas são convertidas em comandos DDL MAQL quando eles são executados em seus projetos GoodData.
No CloudConnect Designer, você trabalha com ferramentas visuais para criar comandos DDL. No LDM Modeler, clique na guia MAQL para exibir a MAQL DDL que está sendo executada. As ferramentas de validação de modelo no CloudConnect Designer tornam-no uma maneira preferencial para modificar modelos de dados lógicos (LDMs).
Para obter mais informações, consulte Data Modeling Using the CloudConnect Tool.
MAQL DDL via API
Para usar os comandos MAQL diretamente através da interface REST API, use a seguinte URL:
http://secure.gooddata.com/gdc/md/<project>/ldm/manage2
Substitua o valor de <projeto>
com sua ID de projeto do GoodData. Você pode digitar vários comandos no campo de texto. São todos executados em conjunto, como parte de uma única transação. Se algum deles falhar, nenhum será aplicado (reversão).
Identificadores
Nos exemplos de script MAQL abaixo, as palavras entre {chaves} denotam identificadores. Pense nelas como IDs legíveis que você pode atribuir a objetos e consultá-las em outros objetos.
Depois que um objeto é criado, o identificador não pode ser alterado. Você pode selecionar suas próprias convenções de nomeação de identificadores. Identificadores podem conter caracteres alfanuméricos, sublinhados e ponto (ou seja, [A-Za-z0-9 _.]
).
Nos exemplos abaixo, identificadores frequentemente são prefixadas com “folder.”, “fact.” etc.
Os nomes para identificadores de coluna de dados devem seguir uma convenção de nomenclatura específica. Esses identificadores referenciam colunas de dados específicas em arquivos de dados que você carrega através da API de carregamento e estrutura em 3NF. Os identificadores devem assumir a forma file.column
. A parte do arquivo
corresponde ao arquivo de dados, enquanto a coluna corresponde a uma coluna específica. Todas as colunas em 3NF que compartilham um arquivo comum também devem compartilhar o mesmo prefixo em seus identificadores. Nos exemplos abaixo, identificadores de coluna de dados são em destaque.
Sincronizar
Todos os comandos modificam o modelo de dados lógico que define a representação formal dos seus dados. Sob essa camada de abstração está um modelo de dados físico que o GoodData usa para realizar cálculos.
Depois de aplicar as alterações através da MAQL DDL, chame o comando SYNCHRONIZE
para aplicar as alterações correspondentes ao modelo de dados físico. Mudanças visuais (nomes, descrições, associação em pastas) não precisam ser sincronizadas com o modelo físico.
Sempre que usar a palavra-chave SYNCHRONIZE
, adicione a palavra-chave PRESERVE DATA
. Isso tenta impedir que os dados em seu projeto sejam removidos.
SYNCHRONIZE {dataset.one}, {dataset.two} PRESERVE DATA;
Conjunto de Dados
Conjunto de dados é um contêiner nomeado para atributos e fatos.
CREATE DATASET
CREATE DATASET {dataset.quotes} VISUAL (TITLE "Stock Quotes Data");
ALTER DATASET
Adicionar atributo/fato
ALTER DATASET {dataset.quotes} ADD {attribute.sector};
Remover atributo/fato
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;
Alterar o nome do conjunto de dados
ALTER DATASET {dataset.quotes} VISUAL(TITLE "Internal Quotes Data");
Um atributo ou fato deve pertencer a um conjunto de dados. Caso contrário, haverá falha de validação do projeto.
Dimensão de Data
O GoodData oferece um conjunto de dados de dimensão Data preparado. Você pode usá-los na MAQL DDL ao criar ou alterar o modelo de dados lógico do seu projeto.
Importar dimensão de data
Se você precisa de apenas uma dimensão de data em seu projeto, execute os seguintes comandos:
INCLUDE TEMPLATE "URN:GOODDATA:DATE";
ALTER ATTRIBUTE {date} ADD KEYS {f_quotes.date};
O primeiro comando importa o conjunto de dados para o projeto, o segundo junta isso à tabela de fatos f_quotes
.
Para usar múltiplas dimensões de data, distingua-as por um identificador especial (para fins técnicos) e um título (para fins visuais).
INCLUDE TEMPLATE "URN:GOODDATA:DATE" MODIFY (IDENTIFIER "born", TITLE "Born");
ALTER ATTRIBUTE {born.date} ADD KEYS {f_players.dt_born};
Para aderir adequadamente à dimensão de data para a tabela de fatos, chame o comando SYNCHRONIZE para o conjunto de dados correspondente.
Atualização de dimensão de data
Ao usar calendários fiscais, novas versões do modelo podem ser lançadas intermitentemente. Quando isso ocorre, atualize todas as dimensões de data em seus projetos que foram criadas a partir desse modelo.
UPDATE TEMPLATE "URN:FISCALAPR1:DATE" WITH DATA;
Atributo
Atributos são unidades que permitem que você especifique como agregar (ou segmentar) seus dados, tais como responsável, cidade, dia, ID, grupo.
Atributos podem, opcionalmente, ter rótulos adicionais. Estas são representações alternativas da string do mesmo valor semântico. Por exemplo, uma pessoa João Ninguém continua sendo a mesma pessoa, mesmo que seja visualizada como “J. Ninguém”,“Ninguém, João”, “Joãozinho” etc.
Por padrão, atributos são 128 caracteres de comprimento. Você pode alterar o comprimento de um atributo para ser até 10.000 caracteres. Para obter mais informações, consulte 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
Se você tem rótulos adicionais atribuído a um atributo, você pode especificar qual é o rótulo de atributo padrão . Ao criar um atributo com vários rótulos, o primeiro rótulo da lista é atribuído como padrão.
Para alterar o rótulo padrão, use a sintaxe de 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 exibir os rótulos com um link nos relatórios, adicione hiperlinks aos rótulos:
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
Você pode classificar os atributos por rótulos. Para criar e ordenar rótulos, uso o seguinte código e especifique o tipo de ordenação (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;
Fato
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};
Pasta
Pastas são usadas para organizar visualmente fatos ou atributos e métricas dentro do projeto. As pastas são tipos; elas só podem conter objetos de um 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
Pastas são preenchidas durante a criação e modificação de atributos, métricas e fatos. Para modificar o nome do objeto da pasta:
ALTER FOLDER {folder.quotes.attr} VISUAL(TITLE "Quotes Attributes");
Otimização de desempenho
Use as seguintes técnicas para otimizar o modelo de dados de desempenho:
Otimização de desempenho para o seu modelo específico requer experiência de modelagem de dados e experiência com modelagem no GoodData, em particular. Para detalhes, contate o Suporte ao Cliente GoodData.
Specifique um DATATYPE
Por padrão, o datamart armazena automaticamente todos os fatos como decimais (12,2) e todos os atributos e rótulos como sequências de caracteres de 128. Por motivos de desempenho ou para armazenar outros tipos de dados, você pode redefinir seu tipo de dados de coluna:
ALTER
DATATYPE {d_quotes_symbol.nm_symbol} VARCHAR(4),
{d_quotes_symbol.nm_symbol} VARCHAR(80), {f_quotes.f_open_price}
DECIMAL(10,2);
Os tipos de dados compatíveis são:
tipo de dados | formulário | observação |
---|---|---|
VARCHAR (N) | N (1..10000) | |
DECIMAL (M,D) | M min(-1e+20) max(1e+20), D max = 6. O máximo permitido é M<=50, mas afetará o desempenho. Mantenha sempre D < M. | |
INT | min(-2147483648) max(2147483647) | |
BIGINT | min(-1e+15) max(1e+15) | |
DATE | ‘YYYY-MM-DD’ | |
DOUBLE | não recomendado |
O tipo de dados data mapeia automaticamente com a dimensão de Data fornecida pelo GoodData, se você anteriormente incluiu no projeto:
INCLUDE TEMPLATE "URN:GOODDATA:DATE" MODIFY (IDENTIFIER "my-date", TITLE "quote");
Criação de várias colunas de fato
No exemplo a seguir, o fato fact.quotes.open_price
já tem uma coluna de fato f_quotes.f_open_price
, mas por motivos de desempenho, você pode adicionar uma coluna idêntica em f_quotes2
:
ALTER FACT {fact.quotes.open_price} ADD {f_quotes2.f_open_price};