数据和商业智能术语表

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

A

聚合

使用数学函数(如对列中的值求平均值或计算表中的行数)汇总数据的行为。

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

阅读更多
属性

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

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

阅读更多

B

BI工具

一款设计用于让人们查看数据而无需依赖代码的应用。

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

阅读更多
区间

在图表中将值分组使用的连续值的单个范围。

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

阅读更多

C

卡片

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

什么是卡片?卡片是仪表盘的一个组件,用于显示数据或文本。Metabase仪表盘由卡片组成,每个卡片显示一些数据(以表格、图表、地图或数字的形式可视化)或文本(如标题、描述性信息或相关链接)。卡片和问题 仪表板上的卡片不仅仅是您提出的问题的小型版本。如果您只是将保存的问题添加到仪表板并结束,那么您可能错过了很多卡片可以做的事情。只要它们共享一个维度,您就可以在单个卡片中组合多个保存的问题。您的卡片也不必包含不同的问题。可能有必要将相同的卡片多次放在仪表板上,例如,如果您想将一个问题同时以折线图和柱状图的形式可视化。编辑仪表板上的卡片 当您编辑仪表板时,您可以: 在仪表板网格上排列和调整卡片的大小。 修改卡片的可视化选项,而不会影响底层问题。 将卡片连接到仪表板过滤器以过滤问题的结果。 设置卡片的点击行为,以改变有人点击卡片时发生的事情。 虽然您的仪表板上的卡片看起来很酷且视觉效果很好,但更重要的是您正在传达人们需要看到的信息,而不是过多的附加内容。仪表板上的卡片示例 图1中的仪表板包括充当标题和描述的文本卡片,以及包含数字、趋势、折线图和区域地图的卡片:图1. 仪表板上的卡片与问题及文本。 卡片与Metabase API 在Metabase API中,api/card路由指的是问题,而不是仪表板上的卡片。您仍然可以使用API来编辑和获取仪表板上的卡片信息(如api/dashboard),但请注意这一点,并查看API文档以获取完整路由和端点的列表。

阅读更多

一个值列表,通常属于特定的字段,在表格中以垂直方式显示。

什么是列?列是一组值,通常属于特定的字段,在表格中以垂直方式显示。在关系型数据库表中,列中的每个值都对应一个不同的记录。列中的值共享一种数据类型。也就是说,如果列的数据类型是整数,那么该列中的每个值都必须是整数。还可能有其他约束,与格式、字符长度或值是否为必填项有关。例如列 这里是Metabase示例数据库中订单表的图像,其中突出显示了创建时间列。创建时间列的数据类型是DateTime,该列中的每个值都对应一个订单的时间戳。图1. 查看订单表,突出显示创建时间列。列与字段 虽然列和字段在技术上并不相同,但通常可以互换使用这些术语。参见列与字段。然而,请注意,列并不总是直接对应于数据库中的字段。例如,您可能想在Metabase中创建一个包含计算值的自定义列,例如显示每个订单的折扣百分比。您可以通过告诉Metabase计算折扣除以小计并在新列中显示结果值来创建此自定义列。列式存储 虽然许多传统的关系型数据库以行形式存储数据,并且通常最适合存储交易数据,但一些数据库(如针对分析优化的数据仓库)使用列式存储。列式数据库(也称为列存储数据库)实际上将列的值存储在一起,而不是基于整个行进行索引。这可以极大地加快分析查询和聚合函数,因为这些查询将能够从磁盘上的同一位置检索类似的数据,而不是在数据库中执行大范围的读取以从单个记录中提取列的值。

阅读更多
国家代码

一个标准的国家两字母或三字母代码。

What is a country code? A country code is a standard two- or three-letter string that identifies a country. Metabase supports alpha-2 country codes. Country code list AD Andorra AE United Arab Emirates AF Afghanistan AG Antigua and Barbuda AI Anguilla AL Albania AM Armenia AO Angola AQ Antarctica AR Argentina AS American Samoa AT Austria AU Australia AW Aruba AX Åland Islands AZ Azerbaijan BA Bosnia and Herzegovina BB Barbados BD Bangladesh BE Belgium BF Burkina Faso BG Bulgaria BH Bahrain BI Burundi BJ Benin BL Saint Barthélemy BM Bermuda BN Brunei Darussalam BO Bolivia (Plurinational State of) BQ Bonaire, Sint Eustatius and Saba BR Brazil BS Bahamas BT Bhutan BV Bouvet Island BW Botswana BY Belarus BZ Belize CA Canada CC Cocos (Keeling) Islands CD Congo, Democratic Republic of the CF Central African Republic CG Congo CH Switzerland CI Côte d’Ivoire CK Cook Islands CL Chile CM Cameroon CN China CO Colombia CR Costa Rica CU Cuba CV Cabo Verde CW Curaçao CX Christmas Island CY Cyprus CZ Czechia DE Germany DJ Djibouti DK Denmark DM Dominica DO Dominican Republic DZ Algeria EC Ecuador EE Estonia EG Egypt EH Western Sahara ER Eritrea ES Spain ET Ethiopia FI Finland FJ Fiji FK Falkland Islands (Malvinas) FM Micronesia (Federated States of) FO Faroe Islands FR France GA Gabon GB United Kingdom of Great Britain and Northern Ireland GD Grenada GE Georgia GF French Guiana GG Guernsey GH Ghana GI Gibraltar GL Greenland GM Gambia GN Guinea GP Guadeloupe GQ Equatorial Guinea GR Greece GS South Georgia and the South Sandwich Islands GT Guatemala GU Guam GW Guinea-Bissau GY Guyana HK Hong Kong HM Heard Island and McDonald Islands HN Honduras HR Croatia HT Haiti HU Hungary ID Indonesia IE Ireland IL Israel IM Isle of Man IN India IO British Indian Ocean Territory IQ Iraq IR Iran (Islamic Republic of) IS Iceland IT Italy JE Jersey JM Jamaica JO Jordan JP Japan KE Kenya KG Kyrgyzstan KH Cambodia KI Kiribati KM Comoros KN Saint Kitts and Nevis KP Korea (Democratic People’s Republic of) KR Korea, Republic of KW Kuwait KY Cayman Islands KZ Kazakhstan LA Lao People’s Democratic Republic LB Lebanon LC Saint Lucia LI Liechtenstein LK Sri Lanka LR Liberia LS Lesotho LT Lithuania LU Luxembourg LV Latvia LY Libya MA Morocco MC Monaco MD Moldova, Republic of ME Montenegro MF Saint Martin (French part) MG Madagascar MH Marshall Islands MK North Macedonia ML Mali MM Myanmar MN Mongolia MO Macao MP Northern Mariana Islands MQ Martinique MR Mauritania MS Montserrat MT Malta MU Mauritius MV Maldives MW Malawi MX Mexico MY Malaysia MZ Mozambique NA Namibia NC New Caledonia NE Niger NF Norfolk Island NG Nigeria NI Nicaragua NL Netherlands NO Norway NP Nepal NR Nauru NU Niue NZ New Zealand OM Oman PA Panama PE Peru PF French Polynesia PG Papua New Guinea PH Philippines PK Pakistan PL Poland PM Saint Pierre and Miquelon PN Pitcairn PR Puerto Rico PS Palestine, State of PT Portugal PW Palau PY Paraguay QA Qatar RE Réunion RO Romania RS Serbia RU Russian Federation RW Rwanda SA Saudi Arabia SB Solomon Islands SC Seychelles SD Sudan SE Sweden SG Singapore SH Saint Helena, Ascension and Tristan da Cunha SI Slovenia SJ Svalbard and Jan Mayen SK Slovakia SL Sierra Leone SM San Marino SN Senegal SO Somalia SR Suriname SS South Sudan ST Sao Tome and Principe SV El Salvador SX Sint Maarten (Dutch part) SY Syrian Arab Republic SZ Eswatini TC Turks and Caicos Islands TD Chad TF French Southern Territories TG Togo TH Thailand TJ Tajikistan TK Tokelau TL Timor-Leste TM Turkmenistan TN Tunisia TO Tonga TR Türkiye TT Trinidad and Tobago TV Tuvalu TW Taiwan, Province of China TZ Tanzania, United Republic of UA Ukraine UG Uganda UM United States Minor Outlying Islands US United States of America UY Uruguay UZ Uzbekistan VA Holy See VC Saint Vincent and the Grenadines VE Venezuela (Bolivarian Republic of) VG Virgin Islands (British) VI Virgin Islands (U.S.) VN Viet Nam VU Vanuatu WF Wallis and Futuna WS Samoa YE Yemen YT Mayotte ZA South Africa ZM Zambia ZW Zimbabwe

阅读更多

D

仪表板

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

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

阅读更多
数据字典

一份描述数据库中的表、字段和其他元素及其含义和来源的文档。

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

阅读更多
数据湖

数据湖是一个存储结构化和非结构化信息的地方,通常以文件或blob的形式存在。

What is a data lake? A data lake is a place to store both structured and unstructured information, typically as files or blobs. You can think of a data lake as a dumping ground for all of your data, regardless of structure, format, or intended use. The idea of a “lake” is largely marketing jargon, but the aquatic comparison comes from the idea that information in a data lake flows in a more “natural” state than that of the more rigid and hierarchical data warehouse. And because they can hold raw data that doesn’t need to adhere to a specific schema, data lakes tend to be cost-effective when scaling to store substantial amounts of information (into the petabytes). Since there’s no need to define a schema at the start, data lakes can be straightforward to set up; you can load data in for a specific use or just to keep it on hand for the future, even if you aren’t yet sure what kinds of queries you’ll need to run on it. However, once you do get things set up, configuring the tools you’ll need to actually make your data lake useful can get complex and expensive — typically requiring the expertise of data engineers. Those engineers will set up ETLs as needed, or even train machine learning models on parts of your data lake. Data lakes rely on a schema-on-read system, meaning data only gets verified against a schema once it’s pulled from that data lake for querying, rather than when it’s first written. This does mean, however, that pulling from and making use of a data lake takes more work. And just because a data lake allows for greater flexibility doesn’t mean you should thrown all data governance out the window; the information that goes into your lake should still be of good quality, cleaned and annotated so that your ETLs or query engine (and by extension, the people who need the data) can make good use of it. When to use a data lake If you need to analyze huge volumes of semi-structured and/or unstructured information (like if you’re an IoT company) then a data lake may be a good fit. Since there’s no need to enforce an overarching schema when data is written, data lakes can also be an effective solution if you’re dealing with many different types of data sources at once — like streaming data, structured application databases, data from IoT devices, social media, or web traffic. Ultimately, organizations with complex data needs may not rely exclusively on a data lake or a data warehouse (or even a data lakehouse), and instead construct data architectures that can incorporate both, taking into account the organization’s overall strategy, the needs of the people who’ll use it, and the types of queries those people will need to execute. Setting up a data lake Let’s say you want to set up a data lake. In broad strokes, the process will look something like this: Choose a cloud storage provider. There are data lake services out there that can help you set up the various layers and tools you’ll need, but at its core your “lake” is your storage layer — wherever you’re keeping that structured and unstructured data together (like in AWS S3 or Microsoft Azure). Identify your data sources. These may be structured (like an application database), semi-structured (like XML or JSON files), or unstructured (like social media posts, images, or text documents). Clean up and ingest data from those sources. At this stage, you’ll annotate those data sources (especially the semi-structured and unstructured ones), adding metadata and tagging and classifying them based on the types of questions you’re likely to ask of that data. Once that data has been cleaned up, those annotated copies get loaded into your data lake, probably in a columnar format like parquet that’s better for analytical queries. Create ETLs as needed and query your data lake. Because of their mix of formats and often-unstructured nature, engineers and data scientists are usually the ones directly accessing a data lake. People like your data analysts will query the data lake through the use of query engines like Presto or SparkSQL, which run ETLs over the data lake, structuring it on a regular schedule so the data can be queried via SQL. Those queries get executed on the cleaned-up, annotated, columnar copies of your data, rather than on the raw data sources themselves (both the raw data and the cleaned-up date are stored in your data lake).

阅读更多
数据模型

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

What is a data model? The term data model is used to describe any pattern that organizes and labels information. People will use “data model” as a generic way to refer to concepts like schemas, derived tables (views), or ERDs. A good data model helps people find things faster. For example, a mall directory is a data model that organizes information about the stores in the mall. It groups and labels the stores by category or location, and explains how the stores are related to one another by displaying them on a map. This model makes it easier for people to find out where to go, compared to wandering through the mall on their own, or reading through a random list of store names. Data modelling example To make decisions during data modelling, it’s best to start by figuring out what people want to look for, and why. Let’s say we want to create a data model for storing information about movies, to help people look for new things to watch. You can think of this data model as a template that can be filled out for any movie. The template should do two things: Represent the parts of a movie that are useful for finding a specific one. For example, people might search for a movie they want to watch by title, director, genre, or actor. Describe the relationships between the parts, so that it is easy to look up one group of information based on another. For example, the template should make sure that any movie title is associated with at least one director. The simplest type of data model groups related parts together into one template, and includes some information about how to fill it out. For example, the template below can be used as a data model for any movie. Movies Title: Any text (mandatory). Director: List of names (mandatory). Genre: Any text (optional). Cast: List of names (optional). The model can be expanded by adding more parts related to movies such as Release year or Run time. We can also expand on existing parts if they are useful for looking things up. For example, people might want to search for a movie by specific information about the actors in them, such as any acting awards they’ve won. Since Cast only keeps track of actor names, we can split out award information into a new data model. Acting Awards Award: Name of acting award (mandatory). Award year: Year (mandatory). Actor: First name and last name (optional). Since actor names appear in both models (either under Cast or under Actor), there is a relationship to connect the Movies model and the Acting Awards model. When both templates are filled out with real movie and awards information, people will be able to look up a movie by a particular award. The written templates above are a basic way to think about breaking down information for data models, but there are many best practices that you can follow depending on the use case. You can find examples of common data model formats in the next section. Common data models Schemas Schemas are a conceptual data model. They are used by people who work with databases. Information is represented by named columns and data types. Relationships are described by structures such as tables or JSON objects. ERDs ERDs are a visual data model. ERDs are used by people who need to talk about information management and architecture. Information is represented by different shapes, such as rectangles or diamonds. Relationships are described by different lines, such as arrows or dashed lines. Metabase models A Metabase model is a data model that you can create and save from a question or SQL query. Information is represented by named columns and any associated metadata. Relationships are described by the logic used in the question or SQL query. How people actually use the term data model You might find that different teams use the term “data model” informally to mean different things: People who write SQL may use it to refer to derived tables or views. Programmers may use it to refer to a schema or ERD. The Data Model in Metabase If you’re a Metabase admin, you’ll have access to the Data Model page in Metabase. The changes you make here will affect the way that data appears across all of Metabase. What’s the difference between the Data Model page and a Metabase model? The Data Model sits on top of the raw data warehouse tables connected to Metabase. It is a layer of modelling you can use to clean up the tables that your organization can see. You can think of it as a way to “translate” information between the data world and the business world by assigning human-readable names and saving common definitions of segments or metrics. Metabase models sit on top of the Data Model. They can be created by anyone with permissions to use the underlying database tables.

阅读更多

E

ERD

ERD,即实体关系图,是数据库中表格之间连接的图形表示。

什么是ERD?ERD,或实体关系图,是数据库中表之间相互连接的图形表示。ERD展示了数据库的结构(或模式)的高层次视图。ERD在设计新数据模型或识别现有模式中的问题时是一个有用的工具。实体关系图基本上就是通过线(它们之间的关系)连接的盒子(你的实体,或表)。你的数据库软件可能有一些内置功能来创建ERD,但你也可以使用你最喜欢的设计软件,或者采用模拟方式,在一张纸上画出你的ERD。方式并不重要;真正重要的是确保你的图表是准确和逻辑的,这样你就可以为你的特定用例设计最有效的数据库。示例ERD以下是一个示例ERD,显示了Metabase的样本数据库:图1. Metabase样本数据库的简单ERD。四个表,订单、产品、人员和评论,是我们的实体,连接线显示了它们之间三个一对多关系。ERD设计和符号在绘制实体关系图时,每个盒子应包含有关该表名称、字段和关键信息(主键和外键)的信息。你会在上面的示例中注意到,每个表的关键信息都通过字段名旁边的(PK)和(FK)来表示。每个实体之间的线条类型说明了每个表与其他表之间的关系类型。不同的组织和行业使用不同的ERD符号惯例,但最常见的是鸟脚符号,因为用于“多对一”的三叉符号有点像鸟的脚。图2显示了在鸟脚符号中使用的常用符号及其对应的关系类型:图2. 用于表示不同类型表关系的鸟脚符号中的线条。

阅读更多
嵌入式

在一个应用中将另一个应用的某些功能嵌入进去。Metabase使用iframe来嵌入问题、仪表板,或者在某些计划中嵌入完整的Metabase应用程序。

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

阅读更多

F

G

H

I

J

连接

关系数据库中两个表结果的组合。

什么是连接?连接是关系型数据库中两个表结果的组合。虽然“连接”这个词听起来像是合并了表本身,但实际上连接是从两个(或更多)不同的表中取出行,并返回一个新的行集,这些行集结合了这些表的列,使用实体键和外键来确定哪些行是相关的。连接类型SQL连接有四种类型:左外连接:选择表A的所有记录,以及满足连接条件的表B的记录(如果有)。右外连接:选择表B的所有记录,以及满足连接条件的表A的记录(如果有)。内连接:仅选择满足连接条件的表A和表B的记录。全外连接:选择两个表的所有记录,无论是否满足连接条件。Metabase中的示例连接Metabase默认在查询构建器中询问的问题使用左外连接,但对于原生SQL查询(即,如果您在查询中仅使用JOIN而不是指定连接类型),默认为内连接。假设我们想在Metabase的示例数据库中返回来自人员和订单表的结果,例如一个包含订单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 "订单ID", people.name AS "姓名", people.id AS "用户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. 在数据参考部分查看产品表的元数据。” %}最后,您始终可以在Metabase数据浏览器的数据参考部分查看表元数据。图2显示了样本数据库中的产品表如何显示。如图所示,此视图提供了有用的信息,如列名、描述、字段类型和数据类型:{% include image_and_caption.html url=”/glossary/images/metadata/metadata-data-reference.png” description=”图2. 在数据参考部分查看产品表的元数据。” %}

阅读更多
指标

指标是在度量值上执行的计算。在Metabase中,大写的M指标是基于一个表保存的聚合,带有或不带有过滤器的度量。

什么是指标?指标是在一个度量上进行的计算。指标是数据的定量属性,并应用了一些汇总。指标与度量指标和度量这两个术语经常被互换使用,它们的概念非常相似,都指代数据中的一部分(或从数据中抽取的)数值。然而,它们之间有一个重要的区别:度量是原始的、未经汇总的数据,而指标是汇总的(或总结的)数据。例如,虽然折扣这样的字段是一个度量,但该折扣字段的平均值将是一个指标。有些人也会用“指标”来表示与绩效目标特别相关的度量计算,比如CRR(客户流失率)或NRR(净收入保留率)。根据这个定义,指标基本上是一个KPI(关键绩效指标),这取决于是否有人将该指标指定为“关键”。示例指标如果我们想确定Metabase的示例数据库中订单小计的平均值,我们可以通过汇总来实现,如图1所示:{% include image_and_caption.html url=”/glossary/images/metric/example-metric-summarization.png” description=”图1. 通过小计平均值汇总订单表,这是一个指标。” %}在这种情况下,小计是一个度量,但平均小计是我们的指标。Metabase中的指标在Metabase中,大写的-M指标是基于一个表保存的聚合,可以应用也可以不应用过滤器。如果你和你的团队需要经常引用和使用的某些聚合(如收入),你可以在Metabase中创建一个指标,这样在提问时可以访问它,而不必每次都自己重建这个聚合。

阅读更多

N

规范化

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

什么是规范化?数据规范化是将信息结构化存储在关系型数据库中的过程,以减少冗余。规范化数据确保数据库中的表尽可能高效地工作,消除歧义,使每个表仅服务于单一目的。从非规范化数据库迁移到规范化数据库时,您可能需要将现有表拆分以创建额外的、更小的表。那些新表将具有更窄的焦点,并通过实体键和外键与其他表相连接。随着规范化,您还可以获得减少整体数据库大小和简化数据库维护的附加好处,因为您不再在多个地方存储相同的信息。数据规范化的例子规范化过程是根据相互依赖的规则进行的,这些规则被称为范式。第一范式(1NF)规定字段不应在单个单元格中存储多个值,并且表中的每个字段应该是唯一的。以下是一个例子:非规范化表 产品_ID 产品名称 产品颜色1 产品颜色2 P001 针织夹克 粉色 藏红 P002 裤脚牛仔裤 海军蓝   P003 亚麻背心 骆驼色 米白色 P004 跑步鞋 橙色   您会注意到我们有两个字段包含类似的信息,关于产品颜色。为了使该表符合1NF,我们需要将其拆分为两个可以一起连接的单独表。规范化的产品名称表 产品_ID 产品名称 P001 针织夹克 P002 裤脚牛仔裤 P003 亚麻背心 P004 跑步鞋 规范化的产品颜色表 产品_ID 产品颜色 P001 粉色 P001 藏红 P002 海军蓝 P003 骆驼色 P003 米白色 P004 橙色 查看我们的学习文章,了解更多关于2NF和3NF的例子。尽管存在超出这三个的范式,但它们的使用主要是理论性的,前三个范式应该足以满足大多数实际数据库需求。

阅读更多

O

P

参数

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

What is a parameter? A parameter is a special type of variable that specifies an input to a query. Setting a parameter lets end users input a value (like in a dashboard or report) to change what data that query returns, typically filtering by a measure or dimension. The parameter passes that value through to the query being run, and the results of that query will depend on whatever value that person entered. Parameter vs. variable vs. argument You may see “parameter” used interchangeably with “variable” or “argument,” so it’s worth pointing out some distinctions here. A parameter is a type of variable; it’s just one where some specific input value gets passed along to the program or query being run. Not all variables are parameters, though — you may also have variables that are set within your program or query and can’t be modified by anyone on the other side. An argument refers to the value itself that gets passed along when your program or query runs. For example, if you set a parameter as {% raw %}{{productID}}{% endraw %}, and enter a value of 34, your argument is 34. A parameter defines that there will be an input value, but the input value itself is the argument. So yes, technically these terms all differ, but it’s okay to use them interchangeably, as long as you’re generally referring to a place or container to pass values into so you can filter results. Parameters in Metabase In Metabase, you can set a parameter using a filter widget or via a URL. Parameters come into play in Metabase in a few different ways: SQL templates By adding parameters to SQL queries in Metabase, you can create SQL templates that add filter widgets to those queries, allowing people to easily change that parameter’s value when they run that query. If we wanted to create a SQL template on a query that counted the number of customers in each state using the Sample Database’s People table, we’d use: SELECT count(*) FROM people WHERE state = {%raw%}{{State}}{%endraw%} By wrapping {%raw%}{{State}}{%endraw%} in double curly brackets, we’ve created a parameter that adds a filter widget to this question, letting people input the state they want without needing to change the text of the query itself, like in figure 1: {% include image_and_caption.html url=”/glossary/images/parameter/parameter-sql-template.png” description=”Fig. 1. Creating a SQL template that adds a filter widget to a query.” %} Dashboard filters Dashboard filters let you set parameters that get applied to a dashboard. For example, you can create a dashboard filter that lets people input a State value and link that that filter to the State column in the questions or cards on your dashboard. Then when people enter the value they want (like North Carolina, shown in figure 2), they’ll see those cards change accordingly. {% include image_and_caption.html url=”/glossary/images/parameter/parameter-dashboard-filter.png” description=”Fig. 2. A dashboard with a filter applied on the State column.” %} When you enter a value into a dashboard filter, you’ll notice that the URL changes to include that value. Custom destinations You can also insert parameters into a URL to dictate what happens when people click on a chart in a dashboard. For example, you can set a custom destination by using values from the card’s results to construct a URL that directs people to another dashboard or external site with that ID as part of the URL. Maybe you have a dashboard containing questions that track how different products in your inventory have sold, and a dashboard filter that lets people input the product they want to check in on. You could take things a step further by passing that product’s ID onto a custom destination, parameterizing a URL with that ID value and sending people to that product’s page on your website. When you visit that site, its URL may look something like this: https://www.your-website.com/products/id?productID=34 In this case, that productID=34 in the URL is your parameter. Embedding When embedding Metabase questions and dashboards in your app, you can set parameters to customize what different users see when viewing those embeds.

阅读更多
交叉表

一种数据可视化,它总结了表格的行和列,并允许您旋转(交叉)列。

什么是数据透视表?数据透视表是一种数据可视化工具,可以汇总表格的行和列,并允许您通过旋转(“透视”)列以不同的方式查看这些汇总。汇总行通常是子总账或总账,但它们也可以是其他指标,如平均值。这种通过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. 我们相同的数据透视表,其中“创建时间”列已旋转,使我们能更好地查看表中的所有数据。” %} 现在我们可以快速比较跨日和产品类别的订单,同时仍然看到两者的总账,而无需滚动查看长列表的行。

阅读更多
谓词

一个求值结果为真或假的表达式,例如数量 > 0。真和假值被称为布尔值。

什么是谓词?在 SQL 中,谓词是一种条件表达式类型,其结果为真或假,例如数量 > 0。在查询中包含谓词可以通过过滤掉不需要的行来缩小结果。谓词表达式都包含某种比较元素,如 =、> 或 <。当进行评估时,产生的真和假值称为布尔值,尽管并非所有数据库都支持布尔值作为数据类型。并非所有数据库都支持相同的谓词列表,尤其是超出数学比较的谓词(如 BETWEEN 或 ISNULL),因此请查阅您的数据库文档,了解哪些谓词适用于您的用例。空值:不是零,而是不存在。虽然谓词通常评估为两个布尔值之一(如真或假),但如果被评估的字段完全没有值,则称为空值。这并不意味着它的值是零,而是表示在该字段中没有值。如果您的谓词表达式需要数量 > 0,那么没有值的行不会返回真或假,而是会返回空值。示例谓词谓词的一个示例是跟随简单 SQL SELECT 查询中的 WHERE 的条件,如下所示:SELECT * from orders WHERE subtotal > 35。在这种情况下,我们的谓词表达式是 subtotal > 35。订单表中的每一行在 Subtotal 字段中都有一个值,并且对于每一行,此谓词都会评估子总额是否大于 35 美元。从那里,我们的查询仅返回子总额大于 35 美元的行。在 Metabase 的查询构建器中,您使用谓词来过滤数据。您还可以在笔记本编辑器中使用自定义表达式编写自己的谓词。在下面的查询中,我们正在过滤 Sample 数据库中的 People 表,以仅显示 State 字段等于 Montana 或 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的示例数据库(一个关系型数据库)包含四个表:产品、订单、人员和评论。” %}

阅读更多

S

SQL

SQL(结构化查询语言)是一种标准化的、广泛使用的语言,用于访问和操作关系型数据库中的数据。

什么是SQL?SQL(结构化查询语言)是一种标准化的、广泛使用的语言,用于访问和操作关系型数据库中的数据。使用SQL涉及编写和执行结构化命令(称为语句),这些命令将您需要的信息或您想要更改的内容传达给数据库。SQL是已发布的ANSI和ISO标准,这意味着有关语言的确切内容和如何工作的规则已经建立。然而,基于SQL的数据库系统(如PostgreSQL、MySQL、SQL Server等)各有不同的功能,它们也有自己的语法特性——没有主要数据库完全符合官方书面标准。使用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美元:

阅读更多
模式

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

What is a schema? A schema is the design or structure that defines the organization of a dataset: which columns are grouped into tables, how those tables relate to each other, and the rules and data types that define those columns. Schema is an overloaded term; it’s an abstract word that has accumulated a lot of different definitions, and as a result can be confusing to sort out. Depending on the context, schema can mean: The overall structure, specification, or “blueprints” of your database A diagram that demonstrates how tables in your database relate to each other A single collection of tables (among many) within your database Finally, schema sometimes means something specific to whichever database platform you’re using, like in Oracle, where schema refers to all objects in a database created by the same user. Schema as overall structure: design and implementation Once you’ve figured how your data fits together from a high-level standpoint (that is, your conceptual data model), the next step is creating a schema that reflects that data model, bringing it from the abstract to a database that your organization can use and populate with information. Broadly speaking, this process is made up of two major steps: Design: map out the structure of your database, creating an entity relationship diagram (ERD) in the process. Implementation: Use that ERD to generate the SQL commands that, when run in your database, will create your desired schema. What your schema design process looks like depends on whether you’re dealing with transactional or analytical databases, and whether you’re starting from scratch or have already begun collecting data. Regardless of at which point you’re designing schemas, you’ll have to think deeply about the needs of your organization and what questions you anticipate asking of your data. Schema-on-write vs. schema-on-read Most traditional relational databases use a schema-on-write system, where data gets verified and formatted into a schema before it’s written to that database. Since the data being written must conform to whatever specific data integrity rules you’ve established (like requiring that all values in a field be unique, not accepting null values in a field, or formatting dates a certain way), adding this new data to your database can be slow. However, the read times are fast, since that data has already been verified. In a schema-on-read system, data (like in a data lake) is only verified once it’s been read, or pulled from that database. Schema-on-read systems tend to be more flexible, as you can store unstructured data without worrying about it conforming to a rigid data model. In this case, writing data is faster (since that data doesn’t need to be verified as it gets loaded in), but queries take more time to execute. Whether you opt for a schema-on-write or schema-on-read strategy will depend on your organization’s needs and specific use cases. If having meticulously structured and consistent datasets is important to your organization, a schema-on-write system may be your best bet. By contrast, if you regularly need to pull in a wide variety of data without always knowing exactly what it that data looks like, you may want to use a schema-on-write system. Logical and physical schemas Regardless of whether you’re working with a schema-on-write or schema-on-read system, you’ll also need to think about database structure and its implementation — that is, your logical and physical schemas. Logical schemas define the structure of your data, while the actual implementation of that structure (like how and where you store the files and code that make up your database) belongs to a physical schema. Logical schemas Logical schemas are created by diagramming how tables and their fields relate to each other. In creating a logical schema, you’ll establish tables, relationships, fields, and views, answering questions like: What data are we collecting, or do we want to collect? What tables does your database (or individual schema within it) need? How do those tables relate to each other? What fields does does each table need? What are the data types for each of those fields? Which fields are required? Schema as diagram: mapping out entities and relationships In answering these and other questions, you’ll likely sketch out an entity relationship diagram (ERD) that defines each table, its fields, their integrity constraints, and the relationships between those tables, including the primary and foreign keys that establish those connections and whether those relationships between tables are one-to-one, one-to-many, or many-to-one. Visualizing your tables and how they relate to each other can also bring to light any major omissions or conflicts. And yes, sometimes you’ll see these diagrams themselves referred to as schemas. The image below shows an entity relationship diagram of a schema with two tables, PRODUCTS and MANUFACTURER. The “(PK)” and “(FK)” notations tell us which fields are primary and foreign keys, and the line linking these tables indicates a one-to-many relationship, in that one manufacturer can be linked to many products. {% include image_and_caption.html url=”/glossary/images/schema/simple-erd.png” description=”Fig. 2. An entity relationship diagram of a schema with two tables.” %} You can map out your schema on paper or using design software that can directly translate your diagram to the SQL commands that you’ll need to implement your database. At this point your schema is platform-agnostic; mapping out those rules and relationships doesn’t tie you to any single database software. Physical schemas Once you’ve identified the logical configuration of your database, you’ll create a physical schema to implement it into a specific RDBMS, defining where your database files will live as well as their storage allocation on a disk. Schema as one collection of tables among many While a single collection of tables may be sufficient if your database only sees a few users and contains data that everyone needs to access, you may find that a relying on a single schema in your database doesn’t cut it for your organization. If you’re handling data across a lot of tables (think in the dozens, hundreds, or thousands), grouping those tables into separate schemas will help from an organizational standpoint, making it so you can store similar information together while retaining the ability to query across schemas when necessary. Keeping multiple schemas within a database can be helpful from a security standpoint as well, like separating tables that hold sensitive information into a schema that only those who need to can access, usually in combination with views. Schema design for transactional vs. analytical databases When thinking about schemas for transactional databases (also known as operational databases), your data will need to be normalized to some extent and adhere to data integrity standards, since efficiency and performance for those small transactions and OLTP are crucial. Designing a schema for an analytical databases will look different. For starters, you’ve probably already collected raw data, possibly from multiple sources, and now need to impose some structure in order to analyze it. In this case, redundancy is okay, as analytical databases place greater emphasis on explorability and less on performance. Here your schema can also be more loosely defined, as no fixed patterns (like normalization) are needed. Schema design for analytical databases is more about understanding where data from your various sources lives, and knowing what tables you’ll need to join to answers questions you have. Star schema One common structure you’ll see applied to analytical databases is a star schema, which separates data into fact tables (that is, quantitative data) that relate to multiple dimension tables describing those facts. In a simple implementation of a star schema, several dimension tables all surround and relate to a single fact table, looking like a star in diagram form with the fact table at its center, like so: {% include image_and_caption.html url=”/glossary/images/schema/star-schema.png” description=”Fig. 2. An entity relationship diagram of a simple star schema.” %} Tables within a star schema are typically denormalized, which leads to better performance for analytical queries. Creating a database schema Most database platforms (such as Redshift and PostgreSQL) use “schema” to mean the configuration of a dataset and non-nested groupings of tables and other named objects within that dataset, though Oracle defines schema as all of the objects created by and belonging to a single database user. To create a schema within your RDBMS, use the query CREATE SCHEMA, like in this example, where we create a schema with two tables that are linked by the customer_id field: 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 ); This is a very simple schema; we didn’t specify data types or any other constraints on the fields in our tables. If we wanted to require the customer_id field in the customers table and indicate that its data type is an integer, we’d format that field like this: customer_id INT NOT NULL Note that in MySQL, CREATE SCHEMA is synonymous with CREATE DATABASE.

阅读更多
摘要表

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

什么是汇总表?汇总表是聚合的结果,它被保存在数据库或数据仓库中,以便人们可以处理那些预计算指标。术语“汇总表”可能会让人困惑,因为有些人用“汇总表”来描述任何聚合函数的结果,比如过滤和按某些指标和维度分组后得到的表格。根据这个定义,汇总表基本上与交叉表相同,只是没有交叉操作。这里的区别在于这些表格是否被保存在您的数据仓库中。在您的数据仓库中创建汇总表可以使人们在不查询原始数据的情况下生成报告变得更加容易。从这个意义上说,汇总表的功能与物化视图(不一定是聚合数据)非常相似。例如:数据仓库中的汇总表例如,您可能正在使用一个采用星型模式设置的分析型数据库,其中包含包含成千上万条单个订单记录的事实表,周围环绕着描述这些订单的维度表。如果您的组织中有人想要生成一份包含过去七天按产品类别划分的销售数据的周报,每次都从原始事实表和维度表中计算将是不高效的且成本高昂。相反,创建汇总表可以让您将这些表格连接起来,并减少对数据的聚合频率。然后在未来,当有人创建该报告时,他们可以使用汇总表作为基础,而不是每次从头开始计算这些数字。虽然汇总表有一些维护工作(如确保数据按计划刷新或调整筛选器和分组,如果它们不是人们需要的精确结果),但它们仍然通常是处理大型数据集的高效方式。

阅读更多

T

V

查看

一个查询及其结果,它类似于您数据库中的一个虚拟表。

什么是视图?视图是一个查询及其结果,在数据库中功能类似于虚拟表。数据库按需计算视图,这意味着它们不是预先计算的或物化的,因此不会占用数据库中的任何存储空间。您可以将其视为虚拟或逻辑表。数据库视图允许您将来自多个表的信息组合起来,并按照对查询数据的人最有意义的格式来格式化信息。您(或数据库管理员)可以创建一个视图,隐藏杂乱表格中不必要的字段,或者将表连接起来以合并相关数据。通过使用视图作为起点,人们不需要每次都运行相同的复杂查询,只需获取有关数据的实际问题。查询视图的缺点是这些查询运行起来可能很耗时,尤其是如果该视图是多个表或多个连接的结果。数据库管理员还使用视图进行安全目的,例如创建隐藏基表中某些字段的视图。这样,其他用户仍然可以访问和查询他们需要的资料,而不必访问敏感字段或行。视图与物化视图 如果视图是虚拟表(按需计算),那么物化视图就像数据库中的常规表一样。虽然视图要求每次引用该视图时都重新运行查询,但物化视图是预先计算的视图,已保存在数据库中。因此,物化视图会占用您的数据库空间,但由于数据库不必每次都计算物化视图,因此在查询时比标准数据库视图(就像查询常规表一样)要快得多。您应该(以及不应该)使用数据库视图 在您的数据库中创建视图是个好主意,如果:您需要经常访问复杂查询的结果,而无需每次都输入该查询。您希望通过限制对敏感信息的访问来加强数据库安全。您想创建自定义列,而无需更改数据库的基本结构。您想通过隐藏不太可能被查询的字段来简化表的外观。然而,如果数据库的基本结构可能会更改,您可能不想依赖于视图;一旦字段名更改,您已建立的视图查询可能会中断。您的BI工具可能也有类似视图的功能,无论是模型、保存的查询还是SQL片段。这里的重要区别在于,这些都是在BI工具的世界中存在的功能,而视图(无论是否物化)是构建在您的数据库本身中的。示例视图 使用Metabase的示例数据库,假设我们想根据人员表创建一个视图,我们宾夕法尼亚州的团队能够使用这个视图来访问有关我们宾夕法尼亚州客户的姓名、地址、生日和电子邮件信息,但不能访问用户密码。我们会在数据库中运行以下查询来创建该视图,将其命名为pennsylvania_customers,只包含我们从人员表中想要的列,并且只显示州字段值是宾夕法尼亚州缩写(PA)的记录。CREATE VIEW pennsylvania_customers AS SELECT id address email name city state birth_date zip created_at FROM people WHERE state = 'PA' 然后,对于未来的查询,我们宾夕法尼亚州的团队能够通过以pennsylvania_customers作为起点来查询他们的客户基础所需的信息。虽然视图是任何基于SQL的数据库或数据仓库的基本功能,但创建、物化和维护它们的详细信息可能因使用的数据库软件或数据仓库而异。

阅读更多

W

X