Metabase学习教程:提问-2

news2025/7/22 21:10:54

查询编辑器中的自定义表达式

何时应该使用自定义表达式,以及为什么要在Metabase的查询编辑器中利用它们。

在数学中,表达式是符号的集合,它们一起表示一个值。如果你以前使用过电子表格软件,表达式就是公式,比如=SUM(A1,B1).

自定义表达式Metabase查询编辑器是强大的工具,可以覆盖绝大多数分析用例,而无需采取SQL语言从工具箱里出来。事实上,使用查询生成器当您使用SQL时无法得到:

  • 钻取允许人们过滤器,在单击时显示、放大或透视数据。钻取可用于在查询生成器中编写的问题和模型基于GUI和SQL查询—只要您设置了适当的列类型元数据。
  • 可扩展性:使用查询编辑器构建查询允许与您共享问题在不需要了解任何SQL的情况下,从您的问题中学习和构建。

在开发过程中的任何时候都可以通过将现有的简单或自定义问题转换为SQL查询.

有三个地方查询编辑器我们可以使用自定义表达式:

  • 自定义列使用函数计算值(如+添加数字)或操作文本(如lower将文本改为小写)。
  • 自定义筛选器使用类似的函数contains结果要么是真是假。
  • 自定义汇总使用类似的函数countsum聚合记录.

自定义列

我们可以添加自定义列使用表达式计算新列。让我们看看一个表达式的作用。这是订单来自包含在Metabase示例数据库

图1. Metabase包含的示例数据库中的订单表。

假设我们想知道基于税前小计应用于订单的折扣百分比。例如,如果我们给一个10美元的订单打了1美元的折扣,我们希望看到一个列显示我们已经将该订单折扣了10%

不幸的是,快速扫描预览中的列会告诉我们数据库没有存储该计算(即没有折扣百分比列)。我们只有订单的小计和折扣总额。

不过,多亏了数学,我们可以使用折扣总额和订单小计来计算百分比。下面是表达式的作用:我们可以使用表达式计算每行的折扣百分比,并将计算的值存储在新列中。

让我们详细介绍如何创建自定义列。

什么时候在查询编辑器,我们选择自定义列数据部分.

要计算折扣百分比,我们需要原始合计(即小计+折扣),然后我们需要将折扣除以原始合计,得到折扣百分比。

在表达式中,我们使用方括号引用列。例如,我们可以参考订单数据表组件[折扣]。如果需要引用另一个表中的列,则外键,我们可以使用.在表和列之间,如[表.列](或者您可以选择[表格→ 列]从键入左括号时出现的下拉菜单中([). 例如,我们可以进入[Products.类别]这将决定:[Products→ 类别].

现在,我们只对Orders表中的列感兴趣,因此不需要引用另一个表。下面是表达式(或公式),我们将使用它来计算自定义折扣百分比列:

=[折扣]/[小计]

在中输入该表达式现场公式,然后为新列命名:折扣百分比.

图2。输入字段公式以创建自定义列。

单击完成,然后单击可视化按钮看你的新专栏。

因为我们新的折扣百分比列与折扣有关,让我们将列移到优惠列。通过单击列标题并将列拖到目标位置,可以在表上移动列,如下所示:

图3。拖动列以更改其在表可视化中的位置。

因为我们计算的是百分比,所以我们来修改格式,这样更容易阅读。单击折扣百分比去把操作菜单对于列,然后单击齿轮图标设置列格式。

Metabase将滑出设置提要栏格式有选择。我们把款式改成百分比,并将小数位数增加到2。从标题开始折扣百分比占用了大量空间,我们将列重命名为折扣%.

有一个选项可以添加迷你条形图也。这个条形图不会显示100%的百分比;相反,小条形图将显示相对于其他订单折扣百分比的折扣百分比。让我们暂时不讨论迷你条形图。

这是最后一个问题折扣%列:

图4我们完成了折扣%列。

自定义筛选器

Metabase提供了很多现成的筛选选项,但是您可以使用自定义筛选表达式设计更复杂的过滤器。对于创建使用或者声明,这就是我们将在这里讨论的。

通常在查询编辑器,当我们在问题中添加多个筛选器时,Metabase隐式地将这些筛选器与以及操作员。例如,如果我们为巨大的以及过滤空气动力学,我们的问题只会返回两者都是的产品巨大的以及空气动力学它(巨大的空气动力学产物)在代谢酶中不存在示例数据库.

过滤巨大的或者空气动力学,我们将选择自定义表达式过滤器下拉列表,然后使用contains函数检查产品是否具有巨大的空气动力学标题里的某个地方。

contains(string1,string2)

contains检查string1是否包含string2。所以字符串1是要检查的绳子(干草堆),以及字符串2是要查找的文本(针)。既然我们想找一个巨大的空气动力学产品,我们可以写两个contains中间带有OR运算符的表达式:

=contains([title],“巨大”)或contains([title],“空气动力学”)

结果数据集将包含巨大的空气动力学:

图5.巨大或空气动力学产品。

请注意,自定义筛选器表达式必须始终解析为truefalse如果contains函数,则如果标题具有巨大的空气动力学否则表达式的计算结果为false

但是,可以在语句中嵌套不解析为truefalse的表达式,例如:

=contains(concat([名字],[姓氏],“向导”)

因为最外层的功能(contains)决定为真或假。但是你不能用concat([名字],[姓氏])作为一个过滤器,因为它将解析为一个文本字符串(尽管您可以使用concat创建一个自定义列,例如全名).

自定义摘要

自定义表达式解锁了许多聚合数据的不同方法。让我们考虑一下分享函数,它以十进制形式返回数据中与条件匹配的行的百分比。例如,假设我们想知道纸制品在我们的产品线中的总百分比,即纸制品在我们的产品线中占多大比例?

首先,我们将选择产品来自示例数据库的表。接下来,我们将单击汇总按钮查询编辑器然后选择自定义表达式。然后,我们将选择分享从下拉菜单,这将提示我们输入条件。在本例中,我们想知道哪些产品的标题中有“Paper”,因此我们将使用contains要搜索的函数title.

=Share(contains([title],“纸张”))

图6计算纸制品的份额。

然后我们命名我们的表达式(例如。,纸制品百分比)然后点击多恩。单击可视化按钮Metabase将计算纸制品的份额。

要更改格式,请选择设置按钮在左下角设置侧边栏和改变数字选项→ 风格百分比.

图7。纸张产品的份额,格式为百分比。

把它们放在一起

让我们用表达式来创建一个相当复杂(做作)的问题。假设我们的任务是找出2019年羊毛和棉花产品的月平均净流入量,净流入量是销售价格减去我们为产品支付的成本。换言之:2019年,每售出一件羊毛和棉花产品,我们平均每个月赚多少钱(或亏多少钱)?

为了得到这些有趣的数字,我们需要使用表达式:

  • 计算每单位的售价(自定义列)。
  • 过滤结果仅包括羊毛或棉制品(定制过滤器),并将这些结果限制在2019年。
  • 计算平均净流入量(自定义摘要),并按月份分组。

我们走吧:

  1. 我们创建一个名为price。来计算price,我们将使用表达式将小计除以售出的单元数(数量):
=[小计]/[数量]
  1. 接下来,我们将使用一个定制的过滤器表达式来过滤羊毛棉花产品(即产品中含有羊毛棉花的产品产品名称).
=contains([Products→ title],“羊毛”)或含有([Products→ title],“棉花”)
  1. 我们还将筛选2019年1月1日2019年12月31日.
  2. 我们将使用自定义表达式来创建自定义摘要。假设标准零售价为50%keystone markup)。所以如果price2美元,我们假设每个单位的产品成本是1美元。考虑到这个假设,我们可以简单地定义每单位售出的净流入量price减去一半price。然后我们将通过计算每个订单的这些数字的平均值来总结这些数据。
=Average([price]-[Products→ price]/2)
  1. 最后,我们将这些订单按订单创建时间按月计算。

这是我们的查询:

图8我们的羊毛和棉质查询。

我们将选择将我们的数据可视化为折线图,我们可以单击它来钻取我们的数据:

图9。钻取织物以查看单个订单。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/16965.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从安装python到使用opencv进行人脸检测

一、python与PyCharm的安装 1.python主要有三种安装方式 参考自:2、Python安装 - 哔哩哔哩 Python安装教程(2022最新)_北京精神病康复中心的博客-CSDN博客 python下载官网:Python Releases for Windows | Python.org 1&#…

EDI系统如何恢复历史映射关系?

在知行之桥EDI系统中,由XML Map端口来处理不同 XML 之间的映射关系,主要的功能为:通过鼠标拖拽建立关系映射,将输入的源XML文件转换为目标XML文件。 XML Map端口的基本设置为: 源文件:配置源XML文件的模板…

【Java篇】备战面试——你真的了解“数组”的吗?

目录 数组概念 声明数组 数组默认值 数组拷贝及数组类型VS基本类型 Arrays类 二维数组 数组概念 在JAVA语言中数组是一种数据结构,是用来存储同一类型数据的集合或者序列,我们可以通过整型下标(index,异或索引&#xf…

Centos7 docker搭建onlyoffice

注意:本文的命令使用的是 root 用户登录执行,不是 root 的话所有命令前面要加 sudo 一、安装docker 1、更新 yum 包(使用 root 权限,生产环境中此步操作需慎重) yum -y update yum -y update 升级所有包同时也升级软…

Set接口和常用方法

Set接口基本介绍 无序(添加和取出顺序不一样),没有索引不允许重复元素,所以最多包含一个nullSet接口的常用方法和List一样,Set接口也是Collection的子接口,因此,常用方法和Collection接口一样 …

【C++】类与对象基本知识 (构造 析构 拷贝 explicit 对象数组 动态静态对象)

目录 1.类与对象基本概念 2.构造函数 3.析构函数 4.构造和析构函数调用顺序 5.拷贝构造函数 6.浅拷贝和深拷贝 7.初始化列表 8.explicit防止构造函数隐式转换 9.对象数组 10.动态对象 10.1 动态对象创建 10.2 动态对象数组 11.静态成员 11.1 静态成员变量 11.2 …

Java学习笔记(三)

Java学习笔记(三) 文章目录Java学习笔记(三)1 常用API1.1 类 Math1.1.1 abs1.1.2 ceil和floor1.2 System1.2.1 exit()1.2.2 currentTimeMillis()1.2.3 arraycopy()1.3 Runtime1.4 Object1.4.1 System.out.println底层原理1.4.2 equalsString类重写的equals方法1.5 对象克隆1.5.…

代码随想录训练营第24天|回溯算法理论基础、LeetCode 77.组合

参考 代码随想录 回溯算法理论基础 什么是回溯算法 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法&#xf…

基于Matlab仿真极化双基地雷达系统以估计目标的范围和速度(附源码)

目录 一、系统设置 二、系统仿真 三、使用圆极化接收阵列 四、总结 五、程序 此示例演示如何仿真极化双基地雷达系统以估计目标的范围和速度。发射器、接收器和目标运动学被考虑在内。 一、系统设置 该系统以 300 MHz 的频率运行,使用线性 FM 波形&#xff0…

1526_AURIX TC275 BootROM下

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这个是固件启动的流程介绍,在启动的过程中,HSM的RAM必然会被初始化掉。这个之前倒是没有注意到,HSM还是有专门的RAM的。自然,我自己接触到的…

基于springboot题库管理系统的设计与实现

目前,许多高校绝大多数课程还采用考教统一的模式来完成教学过程,这种传统的考试模式在教学到实施考试的过程带有很大的主观随意性和不规范性。另外随着各高校近年来学生规模的扩大,教学任务日益繁重,教师的工作量相应的不断增加。…

【Bio】基础生物学 - 蛋白质 protein

文章目录1. 蛋白质Ref1. 蛋白质 蛋白质是生命的物质基础,是有机大分子,是构成细胞的基本有机物,是生命活动的主要承担者。没有蛋白质就没有生命。 蛋白质的基本组成单位是 氨基酸 (amino acid)\blue{\text{氨基酸 (amino acid)}}氨基酸 (am…

【C++】树?堆?怎么实现?

新的一周过去了,大家有没有对上星期练习的题目更加熟练呢? 上星期和上上星期我们主要学习了顺序表,链表,和用这俩都能实现的栈和队列 那么今天我们看看堆又是什么结构 目录 1.树 介绍 2.堆 介绍 3.堆的实现 1.树の介绍 不就是树…

cartopy绘制中国降雨地图

常用的地图可视化的编程工具有 MATLAB、IDL、R、GMT、NCL 等。相比于ArcGIS、QGIS和ArcGISpro用鼠标点来点去,编程绘图也是有很大的优点的,方便,可批量,美观。 大气科学和气象的朋友们一直使用的应该是 NCL,易用性不错…

Windows 编写自动复制备份、删除文件定时任务脚本

目录 一、backup.bat 脚本内容如下: 二、脚本内容解析 1.自动生成当天日期的目录 2. 删除前 n 天的文件 forfile 命令参数说明: 3.复制文件到指定目录 robocopy 命令参数说明: 结论: 三、设置定时任务 1. 打开 控制面板…

【数据结构】谈谈ArrayList和LinkedList的区别

(此图源于比特高博) 上图简洁明了的列出了二者的不同点 下面咱们详细聊聊具体的 要问的是区别,问不同点,那就得从二者共有的但是不同的点来讨论 1.底层实现上:ArrayList底层是顺序表,采用数组结构&…

引入DDP技术:英特尔网卡让数据处理更高效

英特尔网卡引入DDP技术后,提高了云和NFV部署的数据包处理效率,按需重配置报文处理引擎,让数据处理更高效 ◆可编程报文处理流水线 ◆按需优化工作负载 ◆无需重启服务器 ◆设备使用更高效 ◆无缝启用新服务 Intel Ethernet 700系列产品…

谷粒商城项目总结(一)-基础篇

一、项目简介 本项目适合人群:学过ssm是必须的。项目里有mybatis-plus和springcloud的内容,你可以用本项目来做实践,也可以利用本项目初识cloud,但最好还是对微服务有一定了解。 下好了vargant,如果安装centos7很慢&…

是什么让 NFT 项目成为“蓝筹”?

Nov. 2022, Vincy Data Source: Footprint Analytics - Bluechip Collection 在 NFT 这样一个不稳定和新兴的行业中,要赋予项目为 "蓝筹 " 地位是很难的。然而,不少的 NFT 项目宣称自己是蓝筹项目,但它们是吗? Foot…

从零开始配置vim(29)——DAP 配置

首先给大家说一声抱歉,前段时间一直在忙换工作的事,包括但不限于交接、背面试题准备面试。好在最终找到了工作,也顺利入职了。期间也有朋友在催更,在这里我对关注本系列的朋友表示感谢。多的就不说了,我们正式进入vim …