MAQL x SQL

Apesar das semelhanças na construção da sintaxe e nas referências de argumentos predefinidos, a MAQL não é igual ao SQL.

O SQL é uma linguagem de banco de dados relacional de uso geral para ler e escrever dados. A MAQL é multidimensional (consulte MAQL e multidimensionalidade) e os dados são sempre avaliados com base no contexto.

Esta seção descreve algumas distinções elementares, porém importantes.

No nível técnico, a plataforma GoodData separa a maneira como os dados são armazenados no banco de dados (modelo de dados físicos) da maneira como os objetos de dados se relacionam (modelo de dados lógicos). Os desenvolvedores de espaço de trabalho criam o modelo de dados lógicos por meio de uma interface gráfica simples e, quando o modelo é publicado em um espaço de trabalho, o modelo de dados físicos é devidamente criado ou atualizado.

MAQL x SQL

A MAQL permite escrever métricas de relatórios complexas e avançadas em uma fração do tempo em comparação com o SQL. Dê uma olhada abaixo:

Como você verá nos exemplos a seguir, o uso da sintaxe da MAQL é mais eficiente que o da SQL.

Diferenças na consulta de dados

Nesta seção, você explorará as diferenças em como MAQL e SQL abordam a consulta de dados.

Suponhamos que você esteja interessado em dados de vendas de seu banco de dados. No SQL, a consulta pode ser a seguinte:

SELECT SUM(Amount) FROM sales_data;

Resultados em:

1 000 000

Você vendeu US $ 1.000.000 em produtos. Agora, suponhamos que você precise saber quanto desses dados são gerados pelas vendas de calçados. No SQL:

SELECT SUM(amount) FROM sales_data JOIN product_data ON sales_data.product_type_id=product_data.product_type_id WHERE product_data.name = "shoes";

Resultados em:

500 000

Para entender como criar essa segunda consulta, você deve ter comando sobre o seguinte:

  • Entender tabela e coluna como conceitos de banco de dados.
  • Familiaridade com a álgebra relacional.
  • Entender como e onde seus dados são armazenados no banco de dados para consultá-los.

A MAQL assume uma abordagem diferente. Você não precisa saber onde e como seus dados são armazenados. O equivalente da primeira consulta acima é o seguinte na MAQL:

SELECT SUM(Amount)

Note que FROM sales_data não é necessário. Todos os valores relevantes são somados da tabela apropriada no armazenamento de dados. Através do Portal GoodData, você pode executar consultas sem entender os detalhes de como os dados são realmente armazenados no banco de dados.

O equivalente da segunda consulta é o seguinte na MAQL:

SELECT SUM(Amount) WHERE Product Type = shoes

Não há necessidade de lembrar nomes de tabelas ou descobrir junções de tabelas.

Exemplos

Os exemplos a seguir mostram como a criação de uma métrica de lucro é diferente quando escrita em SQL x MAQL:

Exemplo de reutilização

SQLMAQL

Consulta única

SELECT (SELECT SUM(Cost_of_Shipping) FROM Shipping) + (SELECT SUM(Cost) FROM Campaigns) AS Cost_of_Sales

Métrica reutilizável

SELECT SUM(Cost of Shipping) + SUM(Cost)

Exemplo de combinação de várias métricas

SQLMAQL

Consulta única

SELECT 100*(1 - ( (SELECT SUM(Cost_of_Shipping) FROM Shipping) + (SELECT SUM(Cost) FROM Campaigns) ) / (SELECT SUM(Amount) FROM Sales) ) AS Net_Profit_Margin

Métrica reutilizável

SELECT 1 - Cost of Sales/Revenue