MAQL:可组合、可重用的分析查询

哈里·迪克斯撰稿 

分享
MAQL:可组合、可重用的分析查询

无论你是 嵌入分析 进入应用程序或门户, 或者努力提供跨多种工具和用户的无缝分析, one of the most important aspects is consistency; both in providing a consistent, 用户友好的分析经验,并从数据中得出一致的结果.

有效地实现这些目标, GoodData使用语义模型和自己专有的查询语言, 多维分析查询语言, 而不是简单地使用SQL查询. 既然已经有了SQL,为什么还要使用另一种查询语言呢? 简而言之, 可重用性——轻松组合和重用指标的能力——这就是多维度发挥作用的地方.

多维模型

多维建模使用事实和维度的概念,这意味着MAQL度量是上下文感知的. 度量标准按维度上下文分割, 哪些不需要在MAQL表达式本身中指定. 这种多维功能是MAQL与SQL区别开来的特性之一.

本文旨在重点介绍MAQL查询语言的优点, 并结合实例进行比较. 第一个, 让十大网赌靠谱平台分解一下语义模型的一些关键术语/方面以及MAQL在其中的角色.

关系的共享定义:GoodData的语义模型定义了数据集之间的共享关系. 这些关系在查询中隐式使用, 哪一个, 简而言之, 意味着您的用户不需要编写连接,也不需要记住主键和外键列的名称(就像他们使用SQL一样). 它们也不需要记住列(属性或事实)位于哪个数据集中.

指标: 一个度量代表你的用户使用的数字(e.g.,收益,运输成本,利率,转化率等.). 用户希望根据其他列(属性)对指标进行分组和筛选. 语义模型为每个特定的聚合和过滤器组合生成正确的度量. 您的用户需要定义属性的组合, 过滤器, 和度量(一个简单的元素列表). 之后会自动为它们生成长(且无聊)的SQL查询.

事实: 事实只是一个数字的总和. 这是一种可以进行数学运算的数字信息. 例如,年龄、价格或身高.

属性: 类似于事实, 属性是一段信息,但是, 在这种背景下, 其目的不是将其聚集起来. 而不是, 它是描述一个实体的信息, 例如,它通常是文本, 的名字, 状态, 类别, 或大小.

在分析数据时,十大网赌靠谱平台经常会问一些定量问题,比如“多少钱??、“平均数是多少??或“最大值是多少??”. 为了得到这些问题的答案,有必要对数据进行某种计算.

在GoodData中,十大网赌靠谱平台使用MAQL来定义这些计算. 十大网赌靠谱平台称这些计算为度量. 然后十大网赌靠谱平台使用GoodData分析设计器中的指标(使用数据), 十大网赌靠谱平台可以用不同的属性对它们进行分割.

GooData 分析 Designer,数据分析可视化,

有两种方法可以创建指标. 简单的指标可以直接在GoodData分析设计器中使用拖放界面从事实和属性创建. 使用GoodData创建了更复杂的指标.CN API(读 更多关于十大网赌靠谱平台的API的信息,请在这里找到文档).

MAQL vs SQL

尽管语法构造和预定义参数引用有相似之处, MAQL与SQL不同. SQL是一种用于读写数据的通用关系数据库语言, 而MAQL, 正如上面高亮显示, 多维和数据总是基于上下文进行计算.

在技术层面, GoodData平台将数据存储在数据库中的方式(物理数据模型)与数据对象相互关联的方式(逻辑数据模型)分离开来。. 工作区开发人员通过简单的, 图形界面, 当模型发布到工作空间时, 相应地创建或更新物理数据模型.

SQL与MAQL分析查询、可重用指标、语义模型

MAQL的最大好处是它允许您, 或者说你的最终用户, 编写复杂而强大的报告指标所花费的时间只是相应SQL查询的一小部分.

十大网赌靠谱平台更深入地研究一下MAQL和SQL在查询数据方面的不同方法.

例如,十大网赌靠谱平台假设一个用户对销售数据感兴趣. 使用SQL,他们必须像下面这样编写一个查询:

选择金额(金额) FROM sales_data

结果是:

1,000,000

在总, 他们卖出了1美元,000,价值000元的产品, 但他们想要更详细地知道这1美元中有多少,000,鞋子销售创造了1万美元. 他们需要编写的SQL查询如下所示:

SELECT SUM(amount) FROM sales_data
sales_data.product_type_id = product_data.product_type_id哪里
product_data.name = "鞋";

结果是:

500,000

要理解如何构建第二个查询,用户必须能够做以下事情:

  • 在数据库概念的上下文中理解表和列.
  • 熟悉关系代数吗.
  • 了解它们的数据在数据库中的存储方式和位置,以便查询.

MAQL采用了不同的方法. 用户不需要知道他们的数据存储在哪里或如何存储. 上面的第一个SQL查询在MAQL中类似如下:

选择金额(金额)

注意,没有必要使用FROM sales_data,因为所有相关的量都是从数据存储中的适当表中汇总的. 通过GoodData门户, 您可以在不了解数据如何实际存储在数据库中的细节的情况下执行查询.

在MAQL中,第二个SQL查询的等价内容如下:

选择金额(金额) WHERE产品类型=鞋

不需要记住表名或计算表连接.

下面的例子展示了创建利润指标在用SQL和MAQL编写时的区别:

可重用性样品

SQL:一次性查询

SELECT
(选择和(Cost_of_Shipping)
从航运)
+
(选择和(成本)
从活动)
作为Cost_of_Sales

MAQL:可重用度规

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

组合多个指标样本

SQL:一次性查询

选择100 * (1 - 
(
(选择和(Cost_of_Shipping)
 从航运)
+
(选择和(成本)
 从活动)
)
/
(选择笔(金额) 
从销售)
)作为Net_Profit_Margin

MAQL:可重用度规

SELECT 1 -销售成本/收入

如你所见, 与MAQL, 您的用户不需要知道表的名称, 主键和外键列名, 和, 不像SQL,一旦他们写了一些简单的MAQL指标, 他们可以很容易地重复使用它们, 进一步节省时间和精力.

仍然想知道为什么在整个职业生涯中都在使用SQL的情况下还要考虑MAQL? 可重用性是关键. 都在,, 正如前面提到的, 您不需要为最终用户编写一行接一行的查询代码, 但也, 非常重要的是, 您不需要因为数据(日期格式)的结构变化而重写数千行代码, 额外的列, 等.).

回到一致性

正是这种指标的重用,不仅支持终端用户的自助分析(无论技术能力如何)——因为他们可以重用指标来定制或创建他们自己的可视化,只需简单地拖放——而且当在一个 无头BI 方法, 终端用户可以使用这些数据并获得与其他终端用户相同的结果, 不管他们使用的是什么工具(Power BI, 表, 数据科学的笔记本, 等.). 这都是因为语义模型提供了数据的单一真实来源,以及基于maql的度量,允许一致的可重用性.

准备好了解更多?

本文只是简要介绍了MAQL的好处. 要了解如何用GoodData为终端用户提供一致的分析,请下载 GoodData.CN社区版 并按照十大网赌靠谱平台的 GoodData大学MAQL课程.

哈里·迪克斯撰稿 

分享

订阅十大网赌靠谱平台的时事通讯

每个月都在你的收件箱里收集一些关于分析的有趣事实.

订阅