数据和商业智能术语表

A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
V
W
X

A

聚合

使用数学函数汇总数据的行为,例如对列中的值取平均值,或计算表中的行数。

聚合是通过数学函数汇总数据的行为,例如对列中的值取平均值或计算表中的行数。结果数字通常称为指标(metric),这与 Metabase 中的指标(metrics)不同。字段中的单个值本身可能没有太多意义,但当我们以某种特定方式组合这些值时,我们可以更全面地了解我们的数据。聚合是将其值合并为单个结果的过程,通常与分组结合进行——即根据某个值组合多行,例如按维度分组(例如,产品类别或国家/地区)。聚合可以即时计算,但您也可以创建包含结果的汇总表,并保存这些聚合函数的未来使用结果。汇总表在使用大型数据集时可能特别有用;因为汇总表是预先计算的,依赖于它们的查询可以运行得更快。SQL 中的常见聚合函数不同的数据库有不同的函数集,但以下是一些您会遇到最常见的聚合函数:COUNT() - 计算表中的行数。AVG() – 计算字段中值的平均值。MIN() – 识别字段中的最小值。MAX() – 识别字段中的最大值。SUM() – 返回字段中值的总和。STDEV() – 计算字段中值的标准差。示例聚合使用 Metabase 的示例数据库,假设我们想知道我们产品的平均价格,按产品类别分组。在这种情况下,我们将使用“产品”表。我们的 SQL 查询如下所示:SELECT category, avg(price) FROM products GROUP BY category 正如我们所期望的,我们计算了“产品”表中“价格”列的平均值,并根据“类别”字段中的值对这些平均值进行了分组。如果我们想在 Metabase 的查询构建器中执行相同的聚合,我们将“汇总”为“价格平均值”,然后按“类别”分组,如下图所示:图 1. 在查询构建器中执行聚合:按产品类别分组的产品平均价格。

阅读更多
属性

属性是描述或标识某个实体的属性。在某些 Metabase 计划中,用户属性用于限制人们可以访问的数据。

属性是描述或标识某个实体的属性。数据领域的人们在几种不同情况下使用“属性”,因此我们将尽力在此进行区分。基本上,属性是某物的特征。这个某物可能是一个表,但属性也可以指特定记录的特征,例如 Metabase 中的用户属性。关系数据库中的属性在关系数据库中,人们经常将属性与列或字段同义使用,例如产品的类别是该产品的属性(或描述)。属性的这种用法在数据建模和设计实体关系图的上下文中经常出现。示例属性这是 Metabase 示例数据库中“人员”表的概览,其中包含 ID、姓名、地址、城市、州等字段:图 1. “人员”表的概览。这些字段中的每一个都是一个属性——这些字段中的值描述了与它们关联的记录的某些内容,在本例中是“人员”表中的“一个人”。Metabase 中的用户属性用户属性同步仅在 Pro 和 Enterprise 计划(包括自托管和 Metabase Cloud)中可用。属性还可以指与特定用户相关联的独立变量值,例如 User_ID。这种结构称为键值对,有时也称为属性值对。在 Metabase 中,某些计划允许您自己设置用户属性(或通过 SSO 传递给 Metabase)。您可以使用这些用户属性来设置仪表板上的自定义目标,例如,当用户单击图表时,使用用户 ID 参数化 URL。用户属性也是数据沙盒的重要组成部分,数据沙盒可以让你精细控制用户在使用你的 Metabase 实例时可以访问的数据。由于数据沙盒与个人用户相关联,因此设置不同的用户属性可以让 Metabase 确切地知道如何根据谁在查看表来过滤表。

阅读更多

B

BI 工具

一款旨在让人们无需依赖代码即可查看数据的应用程序。

BI 工具是一款旨在让人们无需依赖代码即可查看数据的应用程序。这些应用程序允许人们将数据可视化并以表格、图表和仪表板的形式共享。BI 工具可以接入您组织中现有的数据源,例如数据仓库、CRM 或事件分析服务。常见的 BI 工具电子表格应用程序 BI 工具的一个经典例子是 Microsoft Excel 或 Google Sheets 等电子表格应用,您可以在其中以表格、数据透视表或图表的形式可视化数据,并将结果作为单个文件(或云端文件的链接)共享。BI 平台 BI 工具通常被认为是一个仅用于可视化数据和制作报告的应用程序。Metabase 等 BI 平台是一种 BI 工具,可以处理报告相关的其他任务,例如数据建模、数据目录、版本控制和权限管理。BI 工具如何融入数据栈?图 1. BI 工具位于现代数据栈的分析组件下。BI 工具是 BI 工具的一种,可以设置在数据栈的用户端。特别是 BI 平台,可以处理您堆栈其他部分的一些相同任务。以下是您期望这些组件如何交互:BI 工具与数据库BI 工具不是数据源——它们不会取代您组织拥有的数据存储的生产数据库或数据仓库。BI 工具通过运行查询并显示结果来从数据库中提取信息。BI 工具与 ETLBI 工具不会取代 ETL(或 ELT)用于按计划提取或转换大量数据。但是,与 ETL 一样,一些 BI 平台可以通过即时运行查询来处理数据建模和数据拼接(连接不同数据库中的数据)。BI 工具与事件分析服务Google Analytics、Segment 或 Amplitude 等事件或网络分析服务会从您的产品中收集使用数据。虽然这些服务自带了可视化和共享数据的界面,但它们不被认为是 BI 工具。您可以将它们视为可以独立使用的小型数据栈。通过将事件分析服务与核心 BI 工具结合,可以将它们集成到您的核心数据栈中。您可以从该服务下载事件数据并将其移动到连接到 BI 工具的数据仓库,或者如果支持,还可以将该服务连接到您的 BI 工具。BI 工具与开源编码工具Jupyter Notebook 和 RShiny 等开源工具使用 Python 和 R 等编程语言处理数据。它们可用于构建报告和仪表板以进行分析,但它们不被视为 BI 工具,因为它们依赖于代码而非可视化界面。

阅读更多
分箱

用于在图表中对值进行分组的单个连续值范围。

分箱(bin)是用于在图表中对值进行分组的单个连续值范围。分箱数据有助于简化数据可视化,因此人们可以了解数据的分布并轻松发现异常值。您最常在直方图中使用分箱,但它们并不局限于直方图,并且可能对折线图或饼图等其他可视化很有用。如果您的数据集中的度量包含很多唯一值,那么在图表上绘制每个单独的数据点可能会显得混乱,并且可能不是数据的最佳表示。当您对数据进行分箱时,这些值会被分组到等大小的区间(例如 1–10、11–20、21–30 等),您生成的图表将显示每个分箱中的值计数。数据分箱示例图 1 显示了 Metabase 示例数据库中产品的价格,以直方图形式显示。图 1. Metabase 示例数据库中产品的价格,显示为直方图。Metabase 会根据数据的分布自动生成分箱。这里的分箱是价格范围;我们可以看到,在 $37.50–50.00 的价格范围内,我们的产品比其他任何范围都多。Metabase 自动进行了这些值的分箱,但我们也可以选择所需的分箱数量(10、50 或 100)来进一步调整此图表。如果您的分箱大小太小,您将有太多的分箱,并且可能会得到难以解释的可视化。但是,太少的分箱会给您提供不完整或过度压缩的数据分布图,因此请尝试并找出最适合您数据的方法。

阅读更多

C

卡片

仪表板的组件,用于显示数据或文本。

卡片是仪表板的组件,用于显示数据或文本。Metabase 仪表板由卡片组成,每张卡片显示一些数据(可视化为表格、图表、地图或数字)或文本(如标题、描述性信息或相关链接)。卡片与问题仪表板上的卡片不仅仅是您提出的问题的迷你版本。如果您将保存的问题添加到仪表板并就此结束,您可能会错过卡片所能做的很多事情。只要共享一个维度,您就可以在一个卡片中组合多个保存的问题。您的卡片不一定包含不同的问题。将同一个卡片包含在仪表板的多个位置可能很有用,例如,如果您想将一个问题可视化为折线图和条形图。编辑仪表板上的卡片编辑仪表板时,您可以:在仪表板网格上排列和调整卡片的大小。更改卡片的可视化选项,而不影响底层问题。将卡片连接到仪表板过滤器以过滤问题的结果。设置卡片的点击行为,以更改当有人单击卡片时发生的事情。虽然让仪表板上的卡片看起来时尚且视觉吸引力很重要,但更重要的是您要传达人们需要看到的信息,而不过多添加冗余。仪表板卡片示例图 1 的仪表板包括用作标题和描述的文本卡片,以及包含数字、趋势、折线图和区域地图的卡片:图 1. 仪表板上的问题和文本卡片。卡片与 Metabase API 在 Metabase API 中,api/card 路由指的是仪表板上的问题,而不是卡片。您仍然可以使用 API 来编辑和获取有关仪表板上卡片的信息(例如使用 api/dashboard),但请记住这一区别,并查阅 API 文档以获取完整路由和端点列表。

阅读更多

值的列表,通常属于某个字段,在表中垂直显示。

列(column)是值的列表,通常属于某个字段,在表中垂直显示。在关系数据库表中,一列中的值分别对应于不同的记录。列中的值共享数据类型。也就是说,如果一列的数据类型是整数,则意味着该列中的每个值都必须是整数。可能还有其他约束,与格式、字符长度或该值是否为必填项有关。示例列这是 Metabase 示例数据库中“订单”表的图像,其中“创建时间”(Created At)列已突出显示。“创建时间”列的数据类型是 DateTime,该列中的每个值都对应于单个订单的时间戳。图 1. “订单”表的概览,“创建时间”列已突出显示。列与字段的区别虽然列和字段在技术上不完全相同,但通常可以互换使用这两个术语。请参阅“列与字段的区别”。但是,请记住,列并不总是直接对应数据库中的字段。例如,您可能希望在 Metabase 中创建一个包含计算值的自定义列,例如显示每个订单折扣百分比的列。您可以通过告诉 Metabase 将“折扣”除以“小计”并在新列中显示结果值来创建此自定义列。列式存储虽然许多传统关系数据库以行形式存储数据,并且通常最适合存储事务性数据,但一些数据库(如为分析优化的数据仓库)则采用列式存储。列式数据库(也称为面向列的数据库)将一列的值物理地存储在一起,而不是基于整行进行索引。这可以大大加快分析查询和聚合函数的运行速度,因为这些查询能够从磁盘上的同一位置检索相似数据,而不是执行大型数据库读取操作来从单个记录中提取列的值。

阅读更多

D

仪表盘

一个数据可视化工具,其中包含重要的图表和文本,收集并排列在一个屏幕上。

仪表板是一个数据可视化工具,其中包含重要的图表和文本,收集并排列在一个屏幕上。仪表板提供了对 KPI 和其他业务指标的高级别、集中的视图,可以涵盖从整体业务健康状况到特定项目或活动的成功。该术语源自汽车仪表板,它— 就像其商业智能的对应物一样 — 提供有关重要功能的状态更新和警告(只是关于低刹车液等,而不是您最近的营销活动表现如何)。仪表板 vs. 报表 仪表板与报表不完全相同,尽管您有时会听到人们将仪表板称为报表。区别在于,仪表板通常更容易一目了然地阅读和理解,而传统报表则提供更详细的主题视图。与传统报表不同,仪表板可以在单个屏幕上查看,并且通常包含一些交互式元素。您可能不会打印出仪表板来阅读,这对于依赖静态历史数据的传统报表来说更有意义。但是,与传统报表一样,您可以根据设定的时间表发送更新的仪表板,就像 Metabase 中的仪表板订阅一样。Metabase 中的仪表板 在 Metabase 中,仪表板由包含问题或文本的卡片组成。在 Metabase 中创建和编辑仪表板时,您有很多选择,例如:排列和调整卡片大小以适应您想要的仪表板设计。通过设置自定义点击行为并将一个仪表板链接到另一个仪表板,使您的仪表板具有交互性。添加筛选器小部件并将它们连接到单个卡片上的特定字段。使用 Markdown 使用文本或 GIF 为您的仪表板添加注释。通过链接共享您的仪表板或将其嵌入您的网站或应用程序。示例仪表板 图 1 显示了一个 Metabase 中的仪表板示例,其中包含三个问题卡片和三个筛选器小部件。如果有人在筛选器小部件中输入客户 ID、客户姓名或日期,图表将相应调整以反映添加的筛选器。图 1. 带有三个问题卡片和三个筛选器小部件的仪表板。

阅读更多
数据字典

描述数据库中的表、字段和其他元素,并解释其含义和来源的文档。

数据字典是描述数据库中的表、字段和其他元素,并解释其含义和来源的文档。数据字典是数据库的元数据存储库,存储人们需要理解和使用该数据所需的管理信息。将它们想象成一本普通字典,但数据字典包含有关构成数据库的对象的定义,而不是语言中的每个单词。一个最新且全面的数据字典有助于确保每个人在某些字段或表在实践中的含义上保持一致。数据字典还可以帮助确保不同的部门都一致地使用这些术语。数据字典通常是与它们描述的数据库一起存储的单独文件或一组文件。虽然您的数据库数据字典的某些方面可能对所有数据库用户都可用(例如每个人都需要知道的重要描述),但其他部分可能仅对数据库管理员可见(例如有关数据库物理实现的详细技术信息)。Metabase 中的数据字典 在 Metabase 中,数据参考部分充当数据字典。数据字典包含什么?数据字典收集并存储与数据库相关的元数据,通常包括:表和字段描述 数据类型 完整性约束 命名约定 文件位置 虽然您的数据字典的确切格式将取决于您的组织和数据集的复杂性,但数据字典通常格式化为表或一系列表,其中包含字段名称、描述、数据类型、字符长度以及是否允许空值等元数据字段。您可以使用简单的电子表格、关系数据库软件内部,甚至文本文档来创建数据目录。数据字典 vs. 模式 vs. 数据目录 与数据库的模式(schema)存在一些重叠,但总的来说,模式定义了数据库的结构以及表和它们的字段如何组合在一起,而数据字典提供了关于该数据的上下文信息。您可能也听说过数据目录(data catalog),这是另一个相似的概念。一些组织使用数据目录来更好地促进其数据的发现和分析;它们就像带有附加功能和功能的数据字典,比传统的基于文档的数据字典更进一步。

阅读更多
数据湖

存储结构化和非结构化信息的地方,通常以文件或 blob 的形式。

数据湖是存储结构化和非结构化信息的地方,通常以文件或 blob 的形式。您可以将数据湖看作是您所有数据的倾倒场,无论其结构、格式或预期用途如何。“湖”这个概念在很大程度上是营销术语,但这种水生类比来自于这样一个想法:数据湖中的信息比更僵化和分层的仓库中的信息处于更“自然”的状态。由于它们可以容纳不需要遵循特定模式的原始数据,因此数据湖在扩展以存储大量信息(达到 PB 级别)时往往具有成本效益。由于一开始不需要定义模式,因此设置数据湖可能很简单;您可以为特定用途加载数据,或者只是将其保留以备将来使用,即使您还不确定需要对其运行哪些类型的查询。但是,一旦设置好,配置真正使您的数据湖有用所需的工具可能会变得复杂且昂贵 — 通常需要数据工程师的专业知识。这些工程师将根据需要设置 ETL,甚至在数据湖的部分数据上训练机器学习模型。数据湖依赖于“读取时模式”(schema-on-read)系统,这意味着数据只在从数据湖中提取进行查询时才针对模式进行验证,而不是在首次写入时。然而,这也意味着提取和利用数据湖需要更多的工作。仅仅因为数据湖允许更大的灵活性,并不意味着您应该完全放弃所有数据治理;进入您湖中的信息仍然应该是高质量的、经过清理和注释的,以便您的 ETL 或查询引擎(以及因此需要数据的人员)能够有效利用它。何时使用数据湖 如果您需要分析大量半结构化和/或非结构化信息(例如,如果您是一家物联网公司),那么数据湖可能是一个不错的选择。由于写入数据时不需要强制执行总体模式,因此数据湖也可以成为处理多种不同类型数据源(如流数据、结构化应用程序数据库、来自物联网设备的数据、社交媒体或 Web 流量)的有效解决方案。最终,具有复杂数据需求的组织可能不会仅仅依赖数据湖或数据仓库(甚至数据湖仓一体),而是构建可以同时包含两者的数据架构,并考虑组织的整体战略、用户需求以及用户需要执行的查询类型。

阅读更多
数据模型

组织和标记信息的任何模式。

数据模型一词用于描述组织和标记信息的任何模式。人们会将“数据模型”用作指代模式、派生表(视图)或 ERD 等概念的通用方式。一个好的数据模型可以帮助人们更快地找到信息。例如,商场目录就是一个数据模型,它组织了关于商场内商店的信息。它按类别或位置对商店进行分组和标记,并通过地图显示它们的关系来解释它们之间的关系。与在商场里闲逛或阅读随机的商店名称列表相比,这种模型使人们更容易找到去处。数据建模示例 为了在数据建模时做出决策,最好从弄清楚人们想寻找什么以及为什么开始。假设我们想创建一个用于存储电影信息的数据模型,以帮助人们寻找新的观看内容。您可以将此数据模型视为一个可以为任何电影填写的模板。该模板应该做两件事:表示有助于查找特定电影的电影部分。例如,人们可能按标题、导演、类型或演员搜索他们想看的电影。描述部分之间的关系,以便可以轻松地根据一个信息组查找另一个信息组。例如,模板应确保任何电影标题都与至少一位导演相关联。最简单的数据模型类型将相关部分分组到一个模板中,并包含一些关于如何填写的信息。例如,下面的模板可用于任何电影的数据模型。电影 标题:任何文本(必需)。导演:姓名列表(必需)。类型:任何文本(可选)。演员阵容:姓名列表(可选)。该模型可以通过添加更多与电影相关的部分来扩展,例如发行年份或运行时长。如果现有部分对查找信息有用,我们也可以对其进行扩展。例如,人们可能想通过有关演员的特定信息来搜索电影,例如他们获得的任何表演奖项。由于 Cast 只跟踪演员姓名,我们可以将奖项信息拆分到一个新的数据模型中。表演奖项 奖项:表演奖的名称(必需)。获奖年份:年份(必需)。演员:名字和姓氏(可选)。由于演员姓名出现在两个模型中(在 Cast 或 Actor 下),有一个关系可以连接 Movies 模型和 Acting Awards 模型。当这两个模板都填入真实的电影和奖项信息后,人们就可以通过特定奖项查找电影了。上面的书面模板是考虑分解数据模型信息的简单方法,但根据用例,您可以遵循许多最佳实践。您可以在下一节中找到常见数据模型格式的示例。常见数据模型 模式(Schema) 模式是一种概念数据模型。数据库工作者使用它们。信息由命名列和数据类型表示。关系通过表或 JSON 对象等结构进行描述。ERD ERD 是一种可视化数据模型。需要讨论信息管理和架构的人员使用 ERD。信息由不同的形状表示,例如矩形或菱形。关系由不同的线表示,例如箭头或虚线。Metabase 模型 Metabase 模型是您可以从问题或 SQL 查询中创建和保存的数据模型。信息由命名列和任何相关的元数据表示。关系由问题或 SQL 查询中使用的逻辑来描述。人们如何实际使用数据模型一词 您可能会发现不同的团队非正式地使用“数据模型”一词来指代不同的事物:编写 SQL 的人可能会用它来指代派生表或视图。程序员可能会用它来指代模式或 ERD。Metabase 中的数据模型 如果您是 Metabase 管理员,您将可以访问 Metabase 中的“数据模型”页面。您在此处所做的更改将影响数据在整个 Metabase 中的显示方式。数据模型页面与 Metabase 模型有什么区别?数据模型位于连接到 Metabase 的原始数据仓库表之上。它是您可以用来清理组织可以看到的表的建模层。您可以将其视为一种通过分配人类可读的名称并保存段或度量的常用定义来“翻译”数据世界和业务世界之间信息的方式。Metabase 模型位于数据模型之上。它们可以由任何有权使用底层数据库表的有权人士创建。

阅读更多

E

ERD

ERD,或实体关系图,是数据库表中表如何相互连接的图形表示。

ERD,或实体关系图,是数据库表中表如何相互连接的图形表示。ERD 高级别地显示数据库的结构(或模式)。ERD 是设计新数据模型或识别现有模式中问题的有用工具。实体关系图基本上就是盒子(您的实体,或表)与线(它们之间的关系)连接。您的数据库软件可能具有创建 ERD 的内置功能,但您也可以使用您喜欢的任何设计软件,或者走模拟路线,在一张纸上画出您的 ERD。方法不太重要;真正重要的是确保您的图准确且合乎逻辑,以便您可以为您的特定用例设计最有效率的数据库。示例 ERD 下面是一个显示 Metabase 样本数据库的 ERD 示例:图 1. Metabase 样本数据库的简单 ERD。Orders、Products、People 和 Reviews 这四个表是我们的实体,连接线显示了它们之间的三个一对多关系。ERD 设计和符号 在绘制实体关系图时,每个框应包含表名、字段和键信息(主键和外键)等信息。您会在上面的示例中注意到,每个表的键信息都标有字段名称旁边的 (PK) 和 (FK)。每个实体之间的线条类型说明了每个表与另一个表的关系类型。不同的组织和行业使用不同的 ERD 符号约定,但最常见的一种是 Crow's Foot(乌鸦脚)符号,之所以这样命名是因为三叉符号(用于“一对多”的符号)有点像鸟的脚。图 2 显示了 Crow's Foot 符号中常用的符号及其对应的关系类型:图 2. Crow's Foot 符号中用于表示不同类型表关系的线条。

阅读更多
嵌入

将一个应用程序的某些功能放置在另一个应用程序内部。Metabase 使用 iframe 来嵌入问题、仪表板或(在某些计划中)完整的 Metabase 应用程序。

嵌入是将一个应用程序的某些功能放置在另一个应用程序内部的过程。在分析中,这通常意味着将数据可视化集成到父应用程序中,让用户可以在其应用程序的上下文中查看图表。嵌入也可以为父应用程序节省时间和资源,允许团队利用现有的分析工具,而不是从头开始构建一切。虽然这不是嵌入内容的唯一方法,但在 Metabase 中嵌入涉及使用 iframe(内联框架)将问题、仪表板或(在某些计划中)完整的 Metabase 应用程序放置在另一个应用程序中。嵌入 Metabase 图表和仪表板 嵌入不仅仅是将图表的静态图像放入您的网站或应用程序。相反,该 iframe 在您的主浏览器或应用程序中创建了一个嵌套浏览器,指向其自己的、单独的 URL。这样,嵌入式 Metabase 图表或仪表板将保持最新。当您查看嵌入式图表时,您仍然看到的是 Metabase 图表本身,只是嵌套在父应用程序中。根据安全配置,您的个人嵌入式图表和仪表板可以是公开的或安全的嵌入。您还可以配置或锁定参数以影响人们在这些图表中看到的内容,如图 1 所示:图 1. 在发布用于嵌入的仪表板之前,使参数可编辑并启用暗模式。嵌入完整的 Metabase 应用程序 交互式嵌入仅在 Pro 和 Enterprise 计划(包括自托管和 Metabase Cloud)中可用。使用某些计划,您可以将完整的 Metabase 体验嵌入您的应用程序中。交互式嵌入对于多租户分析特别有用,例如为您的客户提供他们可以在其中查看和交互的特定报表,同时仍留在您的应用程序中。

阅读更多

F

G

H

I

J

连接

关系数据库中来自两个表的合并结果。

连接是将来自两个表的合并结果。虽然“连接”这个词听起来像是您在合并表本身,但连接实际上是取自两个(或更多)不同表的行,并使用实体键和外键来确定哪些行相关,然后返回一个结合了这些表的列的新行集。连接类型 SQL 连接有四种类型:左外连接:选择表 A 的所有记录,以及表 B 中符合连接条件的记录(如果有)。右外连接:选择表 B 的所有记录,以及表 A 中符合连接条件的记录(如果有)。内连接:仅选择表 A 和 B 中符合连接条件的记录。全外连接:选择两个表的所有记录,无论连接条件是否满足。Metabase 中的连接示例 Metabase 在查询生成器中提问时默认使用左外连接,但内连接是原生 SQL 查询的默认设置(即,如果您仅在查询中使用 JOIN 而不是指定连接类型)。假设我们想在 Metabase 的示例数据库中返回“People”和“Orders”表的结果,例如一个包含订单 ID、下订单人员姓名及其用户 ID 的表。查询生成器连接 图 1 显示了此连接在 Metabase 的记事本编辑器中的外观。我们还想选择要显示的列,这样就不会显示来自两个表的每一列。{% include image_and_caption.html url=”/glossary/images/join/join-notebook-editor.png” description=”图 1. 查询生成器中的连接。” %} 原生 SQL 查询连接 如果我们要用 SQL 编写相同的查询,可能看起来像这样:SELECT orders.id AS "Order ID", people.name AS "Name", people.id AS "User ID" FROM people JOIN orders ON people.id = orders.user_ID 在这里,我们确定了连接发生的位置(在这种情况下,连接在 People → ID 和 Orders → User_ID,即实体键和外键)。

阅读更多

K

L

M

元数据

描述数据的信息,以便更容易地查找、操作和使用这些数据。

元数据是描述数据的信息,以便更容易地查找、操作和使用这些数据。元数据示例 考虑计算机上的文件,例如数字图像或文本文档。除了许多其他属性外,该文件还有名称、文件类型、扩展名、大小以及记录创建时间、最后打开时间和最后修改时间的标记。这一切都是元数据——这些属性都不是文件本身,但它们确实告诉您关于该文件的重要信息。理解并跟踪这些元数据可以告诉您和您的计算机如何处理该文件,例如告诉您的计算机打开该文件时使用什么软件。元数据存在于分析领域之外,并且几乎存在于任何地方。它在各种行业中都很重要,从摄影到图书馆再到广播电视,因为任何处理或生成数据的组织都需要能够查找和组织它。元数据有时是人类可读的(例如书籍标题或数据库中的字段名),但也可以是机器可读的,例如 XML 或 JSON 文件。关系数据库和数据仓库中的元数据 在关系数据库中,元数据包括构成数据库模式的所有信息,例如:表名 字段名 实体键 外键 数据类型 视图 完整性约束 但是,数据库元数据不仅限于其模式。用户信息、业务定义、表和字段描述、数据库大小和存储信息都是重要的元数据。根据数据库的配置方式,您可能将一些元数据存储在数据库本身中(例如表名和字段名),或者存储在包含数据库所有元数据的单独文件或文件集中。这被称为数据字典。在数据仓库中,元数据充当索引或目录,定义存储在该数据仓库中的所有对象,以及有关各种 ETL 作业的信息,这些作业可以操纵数据以使其对需要的人有用。关于 ETL 的元数据可能包括作业名称、目的、运行时间、运行频率、作业使用的数据以及数据最终去向。如果该作业被充分标注了大量有用的元数据,那么您或同事就可以更容易地理解该作业的确切功能以及原因。在 Metabase 中使用元数据 Metabase 中的元数据扮演着重要角色!例如,指定列的字段类型(本身就是一种元数据)会让 Metabase 了解该字段的实际含义,因此 Metabase 可以知道如何格式化该字段或显示哪种可视化。模型也利用元数据。在创建模型时为列添加描述可以极大地帮助人们更好地理解您的数据。图 1 显示了在数据引用部分悬停在模型中的列时如何显示这些描述:{% include image_and_caption.html url=”/glossary/images/metadata/hover-description.png” description=”图 1. 在数据引用部分查看 Products 表的元数据。” %} 最后,您始终可以在 Metabase 的数据浏览器的数据引用部分查看表元数据。图 2 显示了示例数据库“Products”表的元数据视图。如您所见,此视图提供了有用的信息,例如列名、描述、字段类型和数据类型:{% include image_and_caption.html url=”/glossary/images/metadata/metadata-data-reference.png” description=”图 2. 在数据引用部分查看 Products 表的元数据。” %}

阅读更多
指标

度量是对度量执行的计算。在 Metabase 中,大写 M 的 Metric 是一个已保存的聚合,基于一个表,可以有或没有过滤器。

度量是对度量执行的计算。度量是数据的定量属性,经过一些汇总。度量与度量 您会发现度量和度量这两个词可以互换使用,它们的概念非常相似,都指代数据的一部分(或来自)的某个数值。然而,有一个重要的区别:度量是原始的、未聚合的数据,而度量是聚合(或汇总)的数据。例如,虽然 Discount 字段是一个度量,但该 Discount 字段的标准差将是一个度量。有些人还将“度量”用于指代与绩效目标相关的度量计算,例如 CRR(客户流失率)或 NRR(净收入留存率)。根据这个定义,度量基本上是 KPI(关键绩效指标),取决于是否有人将该度量指定为“关键”。度量示例 如果我们想确定 Metabase 示例数据库中订单小计的平均值,我们会像图 1 一样进行汇总:{% include image_and_caption.html url=”/glossary/images/metric/example-metric-summarization.png” description=”图 1. 按小计平均值汇总 Orders 表,这是一个度量。” %} 在本例中,Subtotal 是一个度量,而平均小计是我们的度量。Metabase 中的度量 在 Metabase 中,大写 M 的 Metric 是一个基于单个表的已保存聚合,可以应用或不应用过滤器。如果您和您的团队需要定期引用和使用某些聚合(例如收入),您可能希望在 Metabase 中创建一个度量,以便在提问时可以访问它,而无需每次都重新构建该聚合。

阅读更多

N

规范化

在关系数据库中组织信息以减少冗余的过程。

数据规范化是在关系数据库中组织信息以减少冗余的过程。规范化数据可确保数据库中的表尽可能高效地运行,消除歧义,从而使每个表服务于单一目的。从非规范化数据库迁移到规范化数据库时,您可能需要将现有表分解以创建更多、更小的表。这些新表将具有更窄的焦点,并通过实体键和外键与其他表链接。通过规范化,您可以减少整体数据库大小并简化数据库维护,因为您不再在多个地方存储相同的信息。数据规范化示例 规范化过程按照相互构建的规则进行,这些规则被称为范式。第一范式 (1NF) 指出字段不应在单个单元格中存储多个值,并且表中的每个字段都应是唯一的。以下是一个示例:非规范化表 Product_ID Product_name Product_color1 Product_color2 P001 Knit cardigan Pink Maroon P002 Bootcut jeans Navy   P003 Linen vest Camel Off-white P004 Running sneakers Orange   您会注意到我们有两个包含类似信息的字段,关于产品颜色。为了使该表符合 1NF,我们需要将该表分解为两个可以连接在一起的独立表。规范化产品名称表 Product_ID Product_name P001 Knit blazer P002 Bootcut jeans P003 Linen vest P004 Running sneakers 规范化产品颜色表 Product_ID Product_color P001 Pink P001 Maroon P002 Navy P003 Camel P003 Off-white P004 Orange 查看我们的学习文章,了解 2NF 和 3NF 的示例。虽然存在超越这三者的范式,但它们的使用在很大程度上是理论上的,前三种应该足以满足大多数实际数据库需求。

阅读更多

O

P

参数

一种特殊类型的变量,用于指定查询的输入。

参数是一种特殊类型的变量,用于指定查询的输入。设置参数可让最终用户输入值(例如在仪表板或报告中)来更改查询返回的数据,通常通过度量或维度进行过滤。参数会将该值传递给正在运行的查询,查询结果将取决于输入的任何值。参数与变量与参数 您可能会看到“参数”与“变量”或“参数”互换使用,因此值得指出一些区别。参数是一种变量;它只是一个将特定输入值传递给正在运行的程序或查询的变量。并非所有变量都是参数——您可能还有在程序或查询中设置且无法由任何一方修改的变量。参数是指在程序或查询运行时传递的值本身。例如,如果您将参数设置为 {% raw %}{{productID}}{% endraw %},并输入值 34,则您的参数是 34。参数定义了将有输入值,但输入值本身是参数。因此,是的,这些术语技术上有所不同,但可以互换使用,只要您通常是指传递值的某个位置或容器,以便您可以过滤结果。Metabase 中的参数 在 Metabase 中,您可以使用过滤器小部件或通过 URL 设置参数。参数在 Metabase 中通过几种不同的方式发挥作用:SQL 模板 通过将参数添加到 Metabase 中的 SQL 查询,您可以创建 SQL 模板,这些模板会将过滤器小部件添加到这些查询中,让人们在运行查询时可以轻松更改参数的值。如果我们想基于查询创建一个 SQL 模板,该查询使用示例数据库的“People”表计算每个州(state)的客户数量,我们可以使用:SELECT count(*) FROM people WHERE state = {%raw%}{{State}}{%endraw%} 通过将 {%raw%}{{State}}{% endraw %} 包装在双花括号中,我们创建了一个参数,该参数会在该问题中添加一个过滤器小部件,让人们可以输入他们想要的州,而无需更改查询文本本身,如图 1 所示:{% include image_and_caption.html url=”/glossary/images/parameter/parameter-sql-template.png” description=”图 1. 创建一个 SQL 模板,为查询添加过滤器小部件。” %} 仪表板过滤器 仪表板过滤器允许您设置应用于仪表板的参数。例如,您可以创建一个仪表板过滤器,让人们输入州值,并将该过滤器链接到仪表板上问题或卡片的州列。然后,当人们输入他们想要的值(如图 2 所示的 North Carolina)时,他们会看到相应的卡片发生变化。{% include image_and_caption.html url=”/glossary/images/parameter/parameter-dashboard-filter.png” description=”图 2. 一个仪表板,其州列应用了过滤器。” %} 当您在仪表板过滤器中输入值时,您会注意到 URL 会更改为包含该值。自定义目标 您还可以将参数插入 URL,以确定当人们点击仪表板上的图表时会发生什么。例如,您可以通过使用卡片结果中的值来设置自定义目标,以构造一个 URL,该 URL 将人们引导到另一个仪表板或外部网站,并将该 ID 作为 URL 的一部分。也许您有一个仪表板,其中包含跟踪您库存中不同产品销售情况的问题,以及一个允许人们输入他们想要检查的产品的仪表板过滤器。您可以更进一步,将该产品的 ID 传递给自定义目标,用该 ID 值参数化 URL,并将人们发送到您网站上的该产品页面。当您访问该网站时,其 URL 可能如下所示:https://www.your-website.com/products/id?productID=34 在这种情况下,URL 中的 productID=34 是您的参数。嵌入式 当将 Metabase 问题和仪表板嵌入到您的应用程序中时,您可以设置参数来定制不同用户在查看这些嵌入时看到的内容。

阅读更多
透视表

一种数据可视化,用于汇总表的行和列,并允许您旋转(透视)列。

透视表是一种数据可视化工具,用于汇总表的行和列,并允许您旋转(“透视”)列以以不同的方式查看这些摘要。摘要行通常是分项总计或总计,尽管它们也可以是其他指标,如平均值。这种将列旋转 90 度,使该列中的值成为透视表的列本身的能力,在尝试跨多个维度(如时间、地点和类别)分析数据时非常有用。透视表示例 如果我们想了解订单在一周中的不同日期表现如何,并按不同的产品类别细分,那么透视表是一个很好的选择,因为它能让我们轻松地一目了然地查看大量数字数据。该透视表可能看起来像这样:{% include image_and_caption.html url=”/glossary/images/pivot-table/pivot-table.png” description=”图 2. 一个透视表,包含关于四个产品类别在一周中不同日期表现的信息。” %} 包含每天总计的摘要行固然很好,但仍然很难比较不同日期的类别销售额。但是,如果我们透视“创建日期”列,使其值成为列标题,则结果如下:{% include image_and_caption.html url=”/glossary/images/pivot-table/pivot-table-pivoted.png” description=”图 2. 我们相同的透视表,已透视“创建日期”列,让我们更好地查看表中的所有数据。” %} 现在我们可以快速比较跨日期和产品类别的订单,同时仍然看到两者总计,而无需滚动浏览长行列表。

阅读更多
谓词

求值为真或假的表达式,例如 quantity > 0。真值和假值称为布尔值。

在 SQL 中,谓词是一种条件表达式,其计算结果为真或假,例如 quantity > 0。将谓词包含在查询中可以通过根据该表达式返回 true 或 false 来过滤掉不需要的行来缩小结果范围。谓词表达式都包含某种比较元素,例如 =、> 或 <。求值时,resulting true 和 false values are known as boolean values,尽管并非所有数据库都支持布尔值作为数据类型。并非所有数据库都支持相同的谓词列表,尤其是数学比较之外的谓词(如 BETWEEN 或 ISNULL),因此请查看您的数据库文档以确切了解哪些谓词适用于您的用例。空值:不是零,只是不存在 虽然谓词通常计算为两个布尔值之一(例如真或假),但如果正在评估的字段完全缺少值,则称为 null。这并不意味着其值为零,而是表示该字段中没有值。如果您的谓词表达式要求 quantity > 0,则没有值的行将不返回 true 或 false,而是返回 null。谓表示例 谓表示例是在简单的 SQL SELECT 查询中使用 WHERE 后的条件,如下所示:SELECT * from orders WHERE subtotal > 35 在这种情况下,我们的谓词表达式是 subtotal > 35。Orders 表中的每一行在 Subtotal 字段都有一个值,对于每一行,此谓词都会评估其小计是否大于 35 美元。然后,我们的查询仅返回小计大于 35 美元的行。在 Metabase 的查询生成器中,您在过滤数据时使用谓词。您也可以使用自定义表达式在记事本编辑器中编写自己的谓词。在下面的问题中,我们正在过滤示例数据库中的 People 表,以仅显示 State 字段等于 Montana (MT) 的记录,或 state = MT:{% include image_and_caption.html url=”/glossary/images/predicate/predicate-filter.png” description=”图 1. Metabase 查询生成器中的谓词表达式(或过滤器),它将仅返回 State 字段等于 Montana (MT) 的记录。” %}

阅读更多

Q

查询构建器

了解 Metabase 中用于提问的图形界面查询生成器。

在 Metabase 中,查询生成器是用于提问的图形界面。如果您不擅长 SQL,或者更喜欢使用按钮和下拉菜单而不是代码来分析数据,那么查询生成器就能满足您的需求。而且,如果您不确定您想通过数据弄清楚什么,那些按钮和下拉菜单可以给您一些想法,例如列出您可以添加到起始表、模型或已保存问题中的过滤器和分组选项。使用 Metabase 查询生成器提问 您可以通过几种方式使用查询生成器来提问关于您数据的问题:从数据浏览器开始。使用数据可视化右侧的侧边栏添加过滤器和汇总。使用查询生成器界面从头开始创建您的问题。查询生成器为构建问题提供了更大的灵活性:除了常规的过滤和汇总选项外,您还可以使用自定义表达式创建更复杂的过滤器和聚合。您还可以连接表、创建自定义列,并在可视化最终产品之前的每个步骤预览结果。这些路径不是互斥的——您可以从数据浏览器开始,可视化您的数据,使用侧边栏调整您的问题,打开查询生成器进行其他更改,等等。示例:使用查询生成器 我们将使用查询生成器来构建一个使用 Metabase 示例数据库的问题。假设我们想知道我们的大订单(即,总价超过 100 美元)是如何按产品 → 类别细分的。图 1 显示了我们如何在查询生成器中构建此问题:{% include image_and_caption.html url=”/glossary/images/query-builder/notebook-editor.png” description=”图 1. 使用查询生成器提问。” %} 可视化您的问题后,让我们添加另一个过滤器,以便我们仅查看全价订单(没有折扣的订单)。图 2 显示了在添加第二个过滤器之前,我们的查询生成器外观:{% include image_and_caption.html url=”/glossary/images/query-builder/second-filter.png” description=”图 2. 在查询生成器中可视化数据时添加第二个过滤器。” %}

阅读更多
问题

在 Metabase 中,一个问题是查询、其结果和其可视化。

在 Metabase 中,一个问题是查询、其结果和其可视化。如果您试图在 Metabase 中弄清楚关于您数据的一些问题,您可能正在提问,或者正在查看您团队中的其他人创建的问题。在日常使用中,问题几乎等同于查询。您可以在 Metabase 中对问题执行的操作 您可以使用图形查询生成器或原生查询编辑器在 Metabase 中提问,然后执行诸如以下操作:将您的问题保存到集合中,以便以后可以返回或在此基础上构建。将该问题添加到相关的仪表板。仪表板上的问题称为卡片。为您的问题设置电子邮件或 Slack 警报。通过发送链接给团队成员来共享您问题的结果——即使是您尚未保存的问题。将您问题的结果下载为 CSV、XLSX 或 JSON。将您已保存的问题转换为模型。问题示例 图 1 显示了一个基于 Metabase 示例数据库的问题——我们公司产品的平均评分,按类别细分。在这里,我们将此问题可视化为条形图:{% include image_and_caption.html url=”/glossary/images/question/example-question.png” description=”图 1. 一个示例问题,有一个汇总,可视化为条形图。” %} 图 2 显示了同一个问题作为表格的外观:{% include image_and_caption.html url=”/glossary/images/question/example-question-table.png” description=”图 2. 同一个问题,可视化为表格。” %} 问题与 Metabase API 在 Metabase API 中,您可以使用 api/card 路由来编辑和获取您 Metabase 实例中的问题信息。

阅读更多

R

关系数据库

表格数据的集合,或管理表格数据存储和检索的应用程序。

关系数据库是表格数据的集合,或管理表格数据存储和检索的应用程序。关系数据库包含表,这些表由列(也称为字段)和行(也称为记录)组成。您可以通过为两个或多个表分配一个字段来建立表之间的关系。对于其中一个表,该字段将被指定为实体键,而对于其他表,它将是外键。有了这些关系,您就可以跨表查询数据(可能使用 SQL),而无需重新组织或复制这些数据。关系数据库于 20 世纪 70 年代初引入,至今仍然是当今数据结构的主导模型(如果不是唯一的话)。虽然技术上关系数据库指的是您自己的数据,而关系数据库管理系统 (RDBMS) 指的是您用于管理该数据的软件应用程序,但在现实中人们互换使用这些术语。关系模型如此普遍,以至于在许多情况下,“数据库”这个词本身就意味着关系数据库,除非另有说明。关系数据库示例 Metabase 的示例数据库(您在我们的文档和教程示例中看到的那个)是一个 H2 关系数据库。图 1 显示了示例数据库中的四个表:{% include image_and_caption.html url=”/glossary/images/relational-database/tables-in-sample-db.png” description=”图 1. Metabase 的示例数据库(一个关系数据库)包含四个表:Products、Orders、People 和 Reviews。” %}

阅读更多

S

SQL

用于访问和操作关系型数据库中数据的标准化且广泛使用的语言。

结构化查询语言(称为 SQL)是一种标准化且广泛使用的语言,用于访问和操作关系型数据库中的数据。使用 SQL 涉及编写和执行结构化命令(称为语句),这些命令告诉数据库您需要什么信息或您想更改什么。SQL 是已发布的 ANSI 和 ISO 标准,这意味着关于该语言的确切内容及其工作原理都有既定的规则。但是,基于 SQL 的数据库系统(如 PostgreSQL、MySQL、SQL Server 等)都有略微不同的功能和自己的语法怪癖——没有主流数据库 100% 符合官方书面标准。使用 SQL,您可以:创建和配置数据库、表和索引插入、更新和删除数据库中的信息从数据库检索信息(通常称为查询)设置和调整数据库权限发音是“S.Q.L.”还是“sequel”?关于发音的意见不一,其中一些意见非常坚定。当计算机科学家 Donald Chamberlin 和 Raymond Boyce 在 20 世纪 70 年代初首次开发语言规范时,他们称之为“SEQUEL”(发音为“sequel”),但在面临商标纠纷时,他们将语言名称更改为 SQL。ANSI 和 ISO 标准规定官方发音是首字母缩略词(“S.Q.L.”),但如今两种发音都很普遍。因此,选择您觉得最舒服的发音——只是当有人不同意您时不要感到惊讶。使用 SQL 查询数据库无论多么高级或复杂,所有 SQL 查询都涉及告诉数据库从一个或多个表中返回特定的列,然后可选择地指定有关哪些行应包含在结果中以及如何呈现这些行的条件。SQL 不区分大小写,但您通常会看到人们将保留字(例如,函数和子句,如 SELECT、WHERE、HAVING 或 ORDER BY)大写。如果您愿意,可以将 SQL 语句格式化为单行,但人们通常会将查询拆分为多行以提高可读性。SQL 查询示例以下是一个 SQL 查询,它要求 Metabase 的示例数据库返回一个订单表,其中订单小计大于 100 美元:SELECT * FROM orders WHERE subtotal > 100 我们可以将此查询分解为三个语句:SELECT * 告诉数据库返回表中的所有列。FROM orders 告诉数据库是哪个表。WHERE subtotal > 100 告诉数据库过滤结果,只返回 Subtotal 字段值大于 100 的行。上面的示例查询相当简单;更高级的查询可能包括连接、聚合、CTE 以及用于提取和组织数据的其他工具。Metabase 中的 SQL您在 Metabase 中提问时不必编写 SQL(这是查询构建器的工作),但如果您更喜欢 SQL 查询,则可以使用原生查询编辑器,以及诸如以下功能:SQL 变量(包括字段过滤器)SQL 片段SQL 片段控件(在某些计划中可用)如果您选择使用查询构建器在 Metabase 中提问,您总是可以查看支持您问题的底层 SQL 或将其转换为原生 SQL 查询。

阅读更多
SSO

一种身份验证(auth)设置,允许人们使用一个登录来访问独立的应用程序。

SSO 是一种身份验证(auth)设置,允许人们使用一个登录来访问独立的应用程序。这有点像使用您的护照进入不同的国家。使用 SSO,您无需为每个帐户使用一个登录,就像您无需携带特定于每个国家/地区的不同身份证明文件旅行一样。例如,您可能有两个不同的登录,用于两个不同的登录页面,分别用于您的电子邮件和在线银行。如果您的电子邮件提供商和银行的 IT 团队分别设置了 SSO,您就可以使用一个登录页面和一个登录来访问这两个网站。{% include image_and_caption.html url=’/glossary/images/sso/google-sign-in.png’ description=”图 1. 您可能从其他应用程序中认出这个“使用 Google 登录”提示。这是与 Google 登录设置的 SSO 示例。” %} SSO 如何工作?由于数字身份验证无法当面进行,因此您在互联网上的身份由一个服务进行检查,该服务会要求您提供您知道的证据(如密码)或您拥有的实物证据(如发送验证码到您的手机)。这些证据称为身份因子。最常见的身份验证方式是通过单个身份因子,例如密码。如果您添加另一个因子,如手机号码,您将获得双因素身份验证(2FA)。自然,您可以继续添加因子(电子邮件、验证应用程序等)以获得多因素身份验证(MFA)。SSO 使用一种称为身份验证令牌的身份因子,该令牌属于 SSO 提供商,而不是使用您知道或拥有的信息。身份验证令牌是在您登录 SSO 提供商时生成的独特、匿名的信息片段。令牌会临时存储在您的浏览器中(如浏览器 cookie)或提供商的服务器上,并且仅在一段时间内有效——通常直到您关闭浏览器,或在安全团队设置的有效期内。当您访问一个已设置 SSO 的应用程序时,它会直接从 SSO 提供商请求身份验证令牌,而不是要求您登录。如果令牌仍然有效(您在同一会话中已登录 SSO 提供商,且未过期),您的身份将被视为已通过身份验证,您将被允许进入该应用程序。如果令牌已失效,系统将提示您使用 SSO 提供商登录以创建新的令牌。SSO 在整个图景中扮演什么角色?身份验证只处理“你是谁”(身份)。之后,其他服务会跟踪您被允许去哪里,以及您到达那里后可以做什么(访问管理)。身份和访问管理(IAM)是这些工具和流程的总称。SSO 和 IAM 工具包的其他部分通常由身份提供商(IdP),如 Okta、Auth0 或 OneLogin 打包,并作为云安全的一部分实现。Metabase 中的 SSO 在 Metabase 中设置 SSO 意味着人们无需创建单独的 Metabase 用户名和密码即可访问您组织的数据。他们只需通过您选择的身份提供商的同一帐户登录即可。Metabase 的开源版本可以与 Google SSO 或 LDAP 一起设置。Pro 和 Enterprise 版本支持 SAML 和 JWT 标准(除了 Google SSO 和 LDAP)。SSO 还可以与 Metabase Pro 和 Enterprise 计划中的数据沙盒结合使用,以根据用户的属性(如部门或角色)来定义人们可以查看和交互的数据。

阅读更多
Schema (数据库结构)

定义数据集组织的设计或结构,包括其表、列、关系、数据类型和完整性约束。

模式是对数据集组织的设计或结构的定义:哪些列被分组到表中,这些表如何相互关联,以及定义这些列的规则和数据类型。Schema 是一个常用词;它是一个抽象的词,积累了许多不同的定义,因此可能难以区分。根据上下文,schema 可以表示:您的数据库的整体结构、规范或“蓝图”一个演示数据库中表如何相互关联的图一个数据库中(众多)表中的单个集合最后,schema 有时意味着您所使用的数据库平台特有的内容,例如在 Oracle 中,schema 指的是由同一用户创建的数据库中的所有对象。Schema 作为整体结构:设计和实现一旦您从高层角度理解了数据如何组合在一起(即您的概念数据模型),下一步就是创建一个反映该数据模型的 schema,将其从抽象变为您的组织可以使用并填充信息的数据库。广义上讲,这个过程包括两个主要步骤:设计:规划数据库的结构,在此过程中创建实体关系图(ERD)。实现:使用 ERD 生成 SQL 命令,这些命令在数据库中运行后将创建您想要的 schema。您的 schema 设计过程看起来如何,取决于您处理的是事务性数据库还是分析性数据库,以及您是從零开始还是已经开始收集数据。无论您在设计 schema 的哪个阶段,您都需要深入思考您组织的需求以及您预计会提出的数据问题。Schema-on-write vs. schema-on-read大多数传统关系型数据库使用“写入时模式”(schema-on-write)系统,其中数据在写入数据库之前会被验证并格式化为 schema。由于写入的数据必须符合您建立的任何特定数据完整性规则(例如要求字段中的所有值都是唯一的,不允许字段为空值,或以特定方式格式化日期),因此将新数据添加到数据库可能会很慢。但是,读取速度很快,因为数据已经被验证过了。在“读取时模式”(schema-on-read)系统中,数据(如数据湖中的数据)仅在读取或从数据库中提取后才会被验证。Schema-on-read 系统往往更灵活,因为您可以存储非结构化数据,而无需担心它符合严格的数据模型。在这种情况下,写入数据速度更快(因为数据在加载时无需验证),但查询执行速度更慢。您选择“写入时模式”还是“读取时模式”策略,将取决于您组织的需求和具体用例。如果拥有精心结构化和一致的数据集对您的组织很重要,那么“写入时模式”系统可能是您的最佳选择。相比之下,如果您经常需要提取各种各样的数据,而又不知道这些数据具体是什么样的,那么您可能想使用“写入时模式”系统。逻辑模式和物理模式无论您使用“写入时模式”还是“读取时模式”系统,您还需要考虑数据库结构及其实现——即您的逻辑模式和物理模式。逻辑模式定义了数据的结构,而该结构的实际实现(例如,数据库文件的存储方式和位置)属于物理模式。逻辑模式逻辑模式是通过绘制表及其字段之间关系图来创建的。在创建逻辑模式时,您将建立表、关系、字段和视图,回答诸如以下问题:我们要收集什么数据,或者我们想收集什么数据?您的数据库(或其中的单个 schema)需要哪些表?这些表之间如何关联?每个表需要哪些字段?每个字段的数据类型是什么?哪些字段是必需的?Schema 作为图:映射实体和关系通过回答这些和其他问题,您可能会绘制出一个实体关系图(ERD),该图定义了每个表、其字段、完整性约束以及表之间的关系,包括建立这些连接的主键和外键,以及表之间的关系是一对一、一对多还是多对一。可视化您的表及其相互关系也可以揭示任何主要的遗漏或冲突。是的,有时您会看到这些图本身被称为 schema。下图显示了一个包含两个表的 schema 的实体关系图,PRODUCTS 和 MANUFACTURER。(PK)和(FK)表示哪些字段是主键和外键,连接这两个表的线表示一对多关系,即一个制造商可以关联到多个产品。{% include image_and_caption.html url=”/glossary/images/schema/simple-erd.png” description=”图 2. 一个包含两个表的 schema 的实体关系图。” %} 您可以在纸上或使用可以直接将图转换为实现数据库所需的 SQL 命令的设计软件来绘制您的 schema。此时,您的 schema 是平台无关的;绘制这些规则和关系不会将您束缚于任何单个数据库软件。物理模式一旦确定了数据库的逻辑配置,您将创建一个物理模式来实现它到特定的 RDBMS,定义数据库文件的位置以及它们在磁盘上的存储分配。Schema 作为众多表集合中的一个如果您的数据库只支持少数用户并且包含每个人都需要访问的数据,那么单个表集合可能就足够了,但您可能会发现依赖数据库中的单个 schema 无法满足您组织的需求。如果您要处理大量表(几十个、几百个或几千个),将这些表分组到单独的 schema 中将在组织上有所帮助,从而使您可以将相似的信息存储在一起,同时保留在必要时跨 schema 查询的能力。在数据库中保留多个 schema 从安全角度来看也很有帮助,例如将包含敏感信息的表分离到一个只有需要的人才能访问的 schema 中,通常与视图结合使用。为事务性数据库与分析性数据库设计 Schema 在考虑事务性数据库(也称为操作型数据库)的 schema 时,您的数据需要一定程度的规范化并遵守数据完整性标准,因为这些小型事务和 OLTP 的效率和性能至关重要。为分析性数据库设计 schema 的方式会不同。首先,您可能已经收集了原始数据,可能来自多个来源,现在需要施加一些结构才能对其进行分析。在这种情况下,冗余是可以接受的,因为分析性数据库更侧重于可探索性,而较少侧重于性能。在这种情况下,您的 schema 也可以更宽松地定义,因为不需要固定的模式(如规范化)。分析性数据库的 schema 设计更多地是了解您来自各种来源的数据在哪里,以及知道您需要连接哪些表来回答您的问题。星型模式一种常见的应用于分析性数据库的结构是星型模式,它将数据分成事实表(即定量数据),这些事实表与描述这些事实的多个维度表相关。在星型模式的简单实现中,几个维度表围绕着单个事实表并与之相关,在图表中看起来像一颗星,事实表位于中心,如下所示:{% include image_and_caption.html url=”/glossary/images/schema/star-schema.png” description=”图 2. 一个简单星型模式的实体关系图。” %} 星型模式中的表通常是反规范化的,这可以提高分析查询的性能。创建数据库 Schema 大多数数据库平台(如 Redshift 和 PostgreSQL)使用“schema”来表示数据集的配置以及数据集中表和其他命名对象的非嵌套分组,而 Oracle 将 schema 定义为由单个数据库用户创建和属于该用户的所有对象。要在 RDBMS 中创建 schema,请使用 CREATE SCHEMA 查询,例如以下示例,我们创建一个包含两个由 customer_id 字段连接的表:CREATE SCHEMA new_schema; CREATE TABLE new_schema.orders ( order_id product_id customer_id subtotal order_date ) CREATE TABLE new_schema.customers ( customer_id customer_name customer_address customer_email ); 这是一个非常简单的 schema;我们没有为表中的字段指定数据类型或其他约束。如果我们想要求 customers 表中的 customer_id 字段是必需的,并指示其数据类型为整数,我们将这样格式化该字段:customer_id INT NOT NULL 请注意,在 MySQL 中,CREATE SCHEMA 与 CREATE DATABASE 同义。

阅读更多
汇总表

聚合的结果,该结果保存在数据库或数据仓库中,以便人们可以使用这些预先计算的指标。

汇总表是聚合的结果,该结果保存在数据库或数据仓库中,以便人们可以使用这些预先计算的指标。“汇总表”一词可能会令人困惑,因为有些人用“汇总表”来描述聚合函数的所有结果,例如在按某些度量和维度进行过滤和分组后得到的表。根据此定义,汇总表基本上与数据透视表相同,只是没有数据透视功能。这里的区别在于这些表是否保存在数据仓库中。在数据仓库中创建汇总表可以使人们更容易生成报表,而无需查询原始数据。从这个意义上讲,汇总表的功能与物化视图(不一定聚合数据)非常相似。示例:数据仓库中的汇总表例如,您可能正在使用一个采用星型模式设置的分析性数据库,其中包含数万个订单记录的事实表,周围环绕着描述这些订单的维度表。如果您的组织中的某个人想要生成一份包含过去七天按产品类别划分的销售数据的每周报告,每次都从原始事实表和维度表中计算这些数据将是低效且昂贵的。相反,创建汇总表可以让您不那么频繁地连接这些表并聚合这些数据。然后,将来当有人创建该报表时,他们可以使用汇总表作为基础,而不是每次都需要从头开始计算这些数字。虽然汇总表有一些维护成本(例如,确保您的数据按计划刷新或调整过滤器和分组(如果它们不完全符合人们的需求)),但它们仍然是处理大型数据集的一种非常高效的方式。

阅读更多

T

V

变量

程序或查询中可能发生变化的任何值。在 Metabase 中,SQL 查询中的变量用双大括号括起来。

变量是程序或查询中可能发生变化的任何值。在 SQL 中,声明变量可让您在运行查询时临时存储单个值。参数是一种变量,但并非所有变量都是参数。当人们谈论参数时,他们通常特指那些由仪表板或报表的最终用户修改的变量,而不是查询本身的文本。Metabase 中的示例变量 在 Metabase 中,变量是 SQL 查询中的占位符,用于存放用户无需重写查询本身即可更改的值。使用变量可让您筛选数据,通常通过在 SQL 编辑器中的问题上方添加筛选器小部件来实现。变量用双大括号括起来,例如:{% raw %}{{variable_name}}{% endraw %}。在下面的示例中,我们创建一个变量来根据 Sample Database 的 People 表中的 Source 字段进行筛选: SELECT * FROM people WHERE source = {% raw %}{{source}}{% endraw %} 当您在查询中包含变量(在此示例中为 {% raw %}{{source}}{% endraw %})时,Metabase 会在 SQL 编辑器上方添加一个筛选器小部件,如图 1 所示。由于筛选器小部件映射到我们创建的变量,因此我们可以向其中插入不同的值来筛选不同的来源。 {% include image_and_caption.html url=”/glossary/images/variable/variable-example-source.png” description=”图 1. 查询编辑器上方的筛选器小部件映射到双大括号之间的变量。” %}

阅读更多

W

X

© . This site is unofficial and not affiliated with Metabase, Inc.