介绍一下ShopifyQL:新的商业数据查询语言

431 阅读13分钟

介绍一下ShopifyQL—我们新的商务数据查询语言

在Shopify,我们认识到基于数据的决策对企业发展的积极影响。但我们也认识到,对于那些没有数据科学或编码背景的人来说,数据探索是有障碍的。为了让我们的商户更容易地用数据告知他们的决策,我们建立了一个可访问的、以商业为重点的查询语言。我们称它为ShopifyQL。ShopifyQL使Shopify Plus的商家能够利用强大的功能来探索他们的数据,如易于学习的语法,一步到位的数据可视化,内置的周期比较,以及商业特定的日期函数。

我将讨论ShopifyQL如何使数据探索更容易获得,然后深入研究我们在语言中构建的商业特定功能,并通过一些查询实例来引导你。

我们为什么建立ShopifyQL

作为数据科学家、工程师和开发人员,我们知道数据是所有行业的商业决策的一个关键因素。这对于已经实现产品市场适应性的企业来说尤其如此,在这些企业中,优化决策更加频繁。现在,商业是一个广泛的行业,数据的应用对于单个企业的背景来说是非常个性化的,这就是为什么我们知道我们的商家能够以一种可访问的方式探索他们的数据是非常重要的。

标准的仪表盘为监测关键指标提供了一个很好的解决方案,而带有下钻选项的交互式报告可以更深入地了解这些关键指标的变化。然而,报告和仪表盘帮助商家了解发生了什么,但不是为什么发生。通常情况下,商家需要自定义数据探索,以了解一个问题的原因,或调查业务的不同部分是如何受到一系列决策的影响的。为此,他们求助于他们的数据团队(如果他们有的话)和基础数据。

从历史上看,我们拥有数据团队的Shopify Plus商家采用了一种集中的方法,数据团队支持整个业务的多个团队。这种策略帮助他们最大限度地提高他们的数据能力,并始终在业务中优先考虑数据利益相关者。不幸的是,这使得各团队在数据需求上不断竞争。财务深挖比运营决策支持更有优先权。这使得市场营销、商品销售、履行、库存和运营只能自求多福。然后,他们被迫要么用标准的报告和仪表盘来做决策,要么做自己的自定义数据探索(通常在电子表格中)。大多数情况下,他们最终会陷入最糟糕的境地:依靠自己的直觉,将数据排除在决策过程之外。

复杂的数据工程概念和语言(如SQL)阻碍了他们超越报告和仪表盘,进入驱动它们的基础数据集。传统数据查询语言的基础知识很容易学习。然而,将查询语言应用于数据集需要对整个数据生命周期(从数据采集到数据建模)的经验和知识。在某些情况下,简单的商业特定数据探索,如同比销售,需要一个更复杂的查询,而不是用一些过滤器从一些表中选择数据的基本模式。这并不是我们普通商家的核心竞争力。他们被排除在数据探索过程之外,也没有能力利用从自定义数据探索中获得的洞察力来告知他们的决策。这就是为什么我们建立了ShopifyQL。

一个为商业而建的数据查询语言

我们了解商家最了解他们的业务,并希望将他们的数据的力量交到他们手中。有了ShopifyQL,我们授权Shopify Plus的商家在每个层面的数据分析中获得洞察力。

通过我们新的数据查询语言ShopifyQL,Shopify Plus商家可以轻松查询他们的网店数据。ShopifyQL通过简化数据查询的传统方面,使非技术用户也能进行商务数据探索,例如。

  • 直接从查询中建立可视化,而不需要用额外的工具来处理数据。
  • 用一个简单的语句创建同比分析,而不是写复杂的SQL连接。
  • 参考已知的商业日期范围(例如,黑色星期五),而不必记住确切的日期。
  • 访问专门为商业探索目的而建模的数据, 而不必在不同的数据源之间进行连接。

直观的语法,使数据探索变得简单

ShopifyQL语法的设计是为了简化像SQL这样的传统复杂的数据查询语言。一般的语法树遵循一个熟悉的查询结构。

FROM {table_name}
SHOW|VISUALIZE {column1, column2,...} 
TYPE {visualization_type}
AS {alias1,alias2,...}
BY {dimension|date}
WHERE {condition}
SINCE {date_offset}
UNTIL {date_offset}
ORDER BY {column} ASC|DESC
COMPARE TO {date_offset}
LIMIT {number}

我们保留了一些传统查询概念的基本要素,因为我们相信这些是任何查询语言的基石:

  • FROM:选择你要查询的数据表
  • SELECT:我们把措辞改为SHOW,因为我们相信,数据需要被看到才能被理解。该函数的行为保持不变:选择你想在查询中包括的字段
  • GROUP BY:缩短为BY,选择你想聚合你的指标的方式
  • WHERE:过滤查询结果
  • ORDER BY:自定义查询结果的排序方式
  • LIMIT:指定查询返回的行数。

在这些基础之上,我们想为查询数据带来一个以商业为中心的观点。以下是我们今天通过Shopify提供的内容。

1.在选择维度或指标之前,从数据集的背景开始。

我们把FROM移到了SHOW之前。对于用户来说,首先选择他们关心的数据集,然后再选择字段,这样更直观。当想知道转换率时,自然会想到产品,然后是转换率,这就是为什么我们把FROM和SHOW的顺序与传统的查询语言对调了。

2.直接从查询中获得可视化的结果

图表是探索数据的最有效方式之一,VISUALIZE旨在简化这一过程。大多数查询语言和查询界面以表格格式返回数据,并将可视化数据的负担放在终端用户身上。这意味着使用多种工具、手动步骤和复制粘贴。VISUALIZE关键字允许Shopify Plus商户直接从查询中以图表或图形可视化的方式显示他们的数据。例如,如果你想确定某个特定产品类别的多个销售指标的趋势。 使用VISUALIZE绘制月度总销售额和总销售额图表

我们通过引入智能默认值使查询过程更加简单,使你可以用更少的代码行获得相同的输出。上面的查询也可以写成。

FROM sales
VISUALIZE total_sales, gross_sales
BY month
WHERE product_category = ‘Shoes’
SINCE -13m

查询和输出的关系仍然是明确的,但用户能够更快地得到结果。

目前正在研究以下语言功能,并将在今年晚些时候推出。

3.期间比较是ShopifyQL的原生体验

无论是同比、月比还是自定义日期范围,周期比较分析都是商务分析中的一个主要内容。使用传统的查询语言,你必须对数据集进行建模,以包含这些比较作为他们自己的条目,或者编写更复杂的查询,包括窗口函数、普通表表达式或自我连接。我们已经将其简化为一条语句。COMPARE TO关键字允许ShopifyQL用户毫不费力地进行跨期分析。例如,将本周的销售数据与上周进行比较。 用COMPARE TO比较两个时间段的总销售额

这个强大的功能使跨期探索更加简单和快速;不需要学习连接或窗口函数。未来的发展将启用多个比较期,以增加功能。

4.商业特定的日期范围简化了时间段的过滤

商业特定的日期范围(例如黑色星期五、网络星期一、圣诞假期或复活节)涉及手动查找或连接到一些假期数据集。有了ShopifyQL,我们为这些日期范围的过滤处理了手工方面的问题,让用户专注于分析。

DURING语句,结合Shopify提供的日期范围,允许ShopifyQL用户通过商业特定的日期范围过滤他们的查询结果。例如,找出2021年与2020年BFCM期间销量最高的五种产品是什么。

使用DURING来简化BFCM日期范围的查询

未来的发展将允许用户保存自己企业特有的日期范围,使他们在探索特定时间段的数据时具有更大的灵活性。

请在shopify.dev 查看我们当前 ShopifyQL 功能和语言文档的完整列表。

简化商业特定分析和探索的数据模型

ShopifyQL允许我们访问数据模型,以解决商业特定的使用案例,并抽象出数据转换的复杂性。传统上,企业用SQL查询的简单性来换取功能,这限制了用户进行深度挖掘和探索的能力。由于他们不能定制SQL的功能,他们唯一的杠杆就是数据建模。例如,如果你想通过简单的SQL让商业用户更容易进行数据探索,你必须创建一个跨越所有数据源的平面表,或者创建一些特定使用案例的表。虽然这种方法在回答简单的业务问题时很有用,但想要深入挖掘的用户就必须写出更复杂的查询,要么连接多个表,利用窗口函数和常见的表表达式,要么使用原始数据和SQL来创建自己的模型。

与ShopifyQL一起,我们正在建立探索性的数据模型,能够回答整个商业领域的问题:产品、订单和客户。每个模型专注于必要的维度和指标,以实现与该领域相关的数据探索。例如,我们的产品探索数据集允许用户探索产品销售的所有方面,如转换、退货、库存等。以下特点使我们能够保持这些数据模型设计的简单性,同时最大化ShopifyQL的功能。

  • 单一的平面表汇总到一个最低的领域维度谷物和时间属性:不需要复杂的连接、普通的表表达式或窗口函数。每个表都包含必要的指标,描述该领域在整个业务中的互动,无论数据来自哪里(例如,产品页面浏览和库存是来自不同业务流程的产品关注)。
  • 所有指标在所有维度上都是完全相加的:用户能够利用ShopifyQL的聚合功能,而不必担心哪些维度是符合的。这也使得表的模式可以与电子表格相联系,并且对于没有数据建模实践经验的商业用户来说也很容易理解。
  • 数据集支持重叠的用例:用户可以在多个探索数据集中计算总销售额等关键指标,无论重点是产品、订单还是客户。这使用户能够调和他们的工作,并使他们对自己编写的查询有信心。

如果没有创建我们自己的查询语言的杠杆作用,上述特点将需要复杂的查询,这将限制数据探索和分析。

ShopifyQL是我们平台的一个基础部分

我们为我们的Shopify Plus商家、第三方开发者合作伙伴和我们自己建立了ShopifyQL,作为一种服务于商家的商务分析的方式。

商家可以通过我们新的第一方应用程序ShopifyQL笔记本访问ShopifyQL。

我们使用ShopifyQL APIs来建立一个应用程序,让我们的Shopify Plus商家可以在传统的笔记本体验中编写ShopifyQL查询。笔记本应用程序给了用户探索他们的数据的终极自由,执行深度挖掘,并创建全面的数据故事。

ShopifyQL APIs使我们的合作伙伴能够轻松开发分析应用程序

Shopify平台允许第三方开发者建立应用程序,使商家能够完全定制他们的Shopify体验。我们已经建立了GraphQL端点来访问ShopifyQL和基础数据集。开发者可以利用这些API来提交ShopifyQL查询,并在API响应中返回结果数据。这使我们的开发者合作伙伴能够通过查询建模数据来节省时间和资源。有关我们GraphQL API的更多信息,请查看我们的API文档

ShopifyQL将为Shopify平台上的所有分析体验提供动力

我们相信ShopifyQL可以解决所有商业分析的用例。我们的内部团队将利用ShopifyQL来支持我们在Shopify Admin中创建的分析体验--商家管理其商店的在线后台。这有助于我们在整个业务中标准化我们面向商家的分析界面。因为我们也是该语言的使用者,所以我们能敏锐地意识到它的差距,并能更快地做出改变。

展望未来

我们正在计划新的语言功能,旨在使使用ShopifyQL的查询更简单和更强大。

  • 更多的可视化功能:线形图和柱状图是很好的,但是,我们希望提供更多的可视化选项,帮助用户发现不同的洞察力。路线图上的新可视化功能包括双轴图、漏斗图、注释、散点图和甜甜圈图。
  • 透视:用传统的SQL查询进行数据透视是一项复杂的工作。我们将通过以柱状方式按维度属性分解指标的能力来简化这一过程。这将允许通过一个简单的查询来绘制特定指标的维度属性在不同时期的趋势图。
  • 聚合条件:类似于SQL中的HAVING语句,我们正在为用户建立能力,在一个聚合条件下过滤他们的查询。与SQL不同的是,我们将允许在WHERE子句中使用这种模式,消除对额外的语言语法和关键字排序的复杂性的需要。

在我们继续发展ShopifyQL的过程中,我们的重点仍然是使那些希望用数据来告知他们的决策的人更容易获得商业分析。我们将继续授权我们的开发者合作伙伴建立全面的分析应用程序,使我们的商家能够充分利用他们的数据,并支持我们的内部团队为他们面向商家的分析用例提供支持。

Ranko是Shopify的产品经理,负责ShopifyQL和数据产品。他热衷于让商家更容易做出有数据依据的决定。