摘要: 简介 在数据库中,我们除了存储数据外,还存储了大量的元数据。它们主要的作用就是描述数据库怎么建立、配置、以及各种对象的属性等。本篇简单介绍如何使用和查询元数据,如何更有效的管理SQLServer 数据库。 对一些有经验的数据库开发和管理人员而言,元数据是非常有价值的。下面我会介绍一下简单的原理,然后 阅读全文
posted @ 2018-07-13 17:28 DB乐之者 阅读(3268) 评论(2) 推荐(5) 编辑
摘要: 背景 假如我们有关键数据存储在一个表里面,比如人员表中包含员工、部门和薪水信息。只允许用户访问各自部门的信息,但是不能访问其他部门。一般我们都是在程序端实现这个功能,而在sqlserver2016以后也可以直接在数据库端实现这个功能。 解决 安全已经是一个数据方面的核心问题,每一代的MS数据库都有关 阅读全文
posted @ 2018-01-04 16:15 DB乐之者 阅读(6172) 评论(9) 推荐(8) 编辑
摘要: 背景: 图数据库对于表现和遍历复杂的实体之间关系是很有效果的。而这些在传统的关系型数据库中尤其是对于报表而言很难实现。如果把传统关系型数据库比做火车的话,那么到现在大数据时代,图数据库可比做高铁。它已成为NoSQL中关注度最高,发展趋势最明显的数据库。伴随SQL Server 2017的出现,在SQ 阅读全文
posted @ 2017-10-18 10:55 DB乐之者 阅读(18154) 评论(5) 推荐(7) 编辑
摘要: 背景 最近一个客户找到我说是所有的SQL Server 服务器的内存都被用光了,然后截图给我看了一台服务器的任务管理器。如图 这里要说明一下任务管理器不会完整的告诉真的内存或者CPU的使用情况,也就是说这里只能得到非精确的信息,有可能就是一个假警报。 为了让我的客户放心,我检查了服务器并且查看了很多 阅读全文
posted @ 2017-09-04 16:40 DB乐之者 阅读(6910) 评论(9) 推荐(11) 编辑
摘要: 背景 最近越来越多的公司把业务搬迁到云上,公司也有这个计划,自己抽时间在阿里云和Azure上做了一些小的尝试,现在把阿里云上部署ES和kibana记录下来。为以后做一个参考,也希望对其他人有帮助。 这里以阿里云为例,由于测试只有一台机器所以这里就展开到集群了,下面介绍下详细的步骤。 步骤: 1.申请 阅读全文
posted @ 2017-08-30 10:02 DB乐之者 阅读(5462) 评论(0) 推荐(3) 编辑
摘要: 问题 对于DBA或者其他运维人员来说授权一个账户的相同权限给另一个账户是一个很普通的任务。但是随着服务器、数据库、应用、使用人员地增加就变得很枯燥乏味又耗时费力的工作。那么有什么容易的办法来实现这个任务吗? 当然,作为非DBA在测试甚至开发环境也会遇到这种问题,要求授予所有服务器数据库的某个权限给一 阅读全文
posted @ 2016-12-21 10:16 DB乐之者 阅读(2211) 评论(0) 推荐(5) 编辑
摘要: 背景 现在越来越多的企业、公司要求对于数据库实现7*24小时的数据库监控,一般情况下采用的就是第三方的平台来实现邮件和手机短信的监测提醒。前几日公司新上了一台服务器,急于部署程序还没来得及搭建其他相关平台,为了更好的监控数据库,暂时用SQL Server自带的邮件服务来实现对数据库的监控和预警。下面 阅读全文
posted @ 2016-10-10 17:55 DB乐之者 阅读(3598) 评论(3) 推荐(7) 编辑
摘要: 概念 Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。你可以把它看成是命令行提示符cmd.exe的扩充,不对,应当是颠覆。 powershell需要.NET环境的支持,同时支持.NET对象。微软之所以将Powershell 定位为Power,并不是夸大 阅读全文
posted @ 2016-09-27 17:47 DB乐之者 阅读(3757) 评论(9) 推荐(5) 编辑
摘要: 背景 Microsoft SQL Server 对于数据平台的开发者来说越来越友好。比如已经原生支持XML很多年了,在这个趋势下,如今也能在SQLServer2016中使用内置的JSON。尤其对于一些大数据很数据接口的解析环节来说这显得非常有价值。与我们现在所做比如在SQL中使用CLR或者自定义的函 阅读全文
posted @ 2016-08-29 14:23 DB乐之者 阅读(6368) 评论(19) 推荐(15) 编辑
摘要: 许多有经验的数据库开发或者DBA都曾经头痛于并行查询计划,尤其在较老版本的数据库中(如sqlserver2000、oracle 7、mysql等)。但是随着硬件的提升,尤其是多核处理器的提升,并行处理成为了一个提高大数据处理的高效方案尤其针对OLAP的数据处理起到了很好的作用。 充分高效地利用并行查 阅读全文
posted @ 2016-08-22 15:12 DB乐之者 阅读(10652) 评论(1) 推荐(11) 编辑
摘要: 简介 最近测试服务器进行数据归档,其间程序员发现一个问题,空间不足,我查看原因发现日志文件暴涨。然后将数据库改为简单恢复模式,但是依然存在这个问题。经过查询资料发现了日志文件在简单模式下依然增加的原因。 Simple概念 Simple恢复模式也叫做”Checkpoint with truncate 阅读全文
posted @ 2016-06-08 14:17 DB乐之者 阅读(3095) 评论(7) 推荐(3) 编辑
摘要: 这几天要求做一个服务器的统计信息,主要针对表和索引。下面我就简单分享几个查询数据表和索引统计信息的方法: 1.使用T-SQL 语句实现: 执行结果如图 这种方法的优点如下: 运行速度快。 由于不访问用户表,不会影响性能,不加锁。 灵活组合,也可以与其他语句联合查询金结果。 2. 使用系统存储过程sp 阅读全文
posted @ 2016-06-07 17:38 DB乐之者 阅读(11646) 评论(6) 推荐(11) 编辑
摘要: 今天我将介绍在SQLServer 中的三种连接操作符类型,分别是:循环嵌套、哈希匹配和合并连接。主要对这三种连接的不同、复杂度用范例的形式一一介绍。 本文中使用了示例数据库AdventureWorks ,下面是下载地址:http://msftdbprodsamples.codeplex.com/re 阅读全文
posted @ 2016-04-28 19:53 DB乐之者 阅读(7749) 评论(0) 推荐(2) 编辑
摘要: 简介 之前一篇简单的介绍了语法和一些基本的概念,隔了一段时间,觉得有必要细致的通过实例来总结一下这部分内容。如之前所说,分区就是讲大型的对象(表)分成更小的块来管理,基本单位是行。这也就产生了很大优势, 比如在数据库维护备份还原操作的时候,比如在大量用户访问能导致死锁的时候等等。接下来我们通过大量实... 阅读全文
posted @ 2015-12-01 13:59 DB乐之者 阅读(1375) 评论(0) 推荐(4) 编辑
摘要: 隐式转换(Implicit conversion) ,这个情况每个程序员都或多或少的遇到过,这里我结合实际情况简单描述下常见的问题以及如何解决并阐述下原理。所谓隐式转换主要出现在我们T-SQL语句中的where 条件里面,我们先从原因上去看一下为什么会出现隐式转换。出现隐式转换的情况和结果:当SQL... 阅读全文
posted @ 2015-10-29 13:45 DB乐之者 阅读(1686) 评论(1) 推荐(3) 编辑
摘要: 简介 SQL Server每个表中各列的数据类型的有各种形式,产生的效果也各有不同,我们主要根据效率兼顾性能的情况下讨论下如何规定类型。 在SQL Server中,数据的存储以页为单位。八个页为一个区。一页为8K,一个区为64K,这个意味着1M的空间可以容纳16个区。 SQL Server中的分配... 阅读全文
posted @ 2015-07-06 00:17 DB乐之者 阅读(2008) 评论(1) 推荐(7) 编辑

本篇文章介绍的是一个完整AB测试流程应该怎么走。

 

AB测试流程有以下几个步骤:

一、选取实验指标

二、建立实验假设

三、选取实验单位

四、确定最小提升预期值

五、计算最小样本量

六、流量分割

七、确定实验时长

八、数据统计

九、得出结论

接下来就详细说明每个步骤。

一、选取实验指标

一个实验只能有一个核心指标,可以有多个观测指标。

核心指标是用于判断该实验是否显著,观测指标用于判断该实验对其余指标的影响。另外,可以设反向指标,以观测该实验是否会带来一些负面影响。

二、建立实验假设

针对实验要提升的核心指标,我们可以做出不同的假设,如何修改可能会提升指标。

然后就是建立零假设和备择假设。一般零假设是没有效果,备择假设是有效果。

三、选取实验单位

1)用户粒度

这个是最推荐的,即以一个用户的唯一标识来作为实验样本。好处是符合AB测试的分桶单位唯一性,不会造成一个实验单位处于两个分桶,造成的数据不置信

2)设备粒度

以一个设备标识为实验单位。相比用户粒度,如果一个用户有两个手机,那么也可能出现一个用户在两个分桶中的情况,所以也会造成数据不置信的情况。

3)行为粒度

以一次行为为实验单位,也就是用户某一次使用该功能,是实验桶,下一次使用可能就被切换为基线桶。会造成大量的用户处于不同的分桶。强烈不推荐这种方式。

四、确定最小提升预期值

做实验需要考虑ROI。如果开发成本很高,但是最终的提升只有0.01%,可能这个实验的收益提升并不能抵挡付出的成本。所以在实验之初我们就要考虑这个实验提升了多少算作是符合我们的预期。

五、计算试验所需最小样本量

该步骤是要避免流量浪费,高效利用流量,把可用流量分到其他试验。另外还要避免在统计功效不足的情况下给出错误结论。即避免实验过程种,流量使用过多或者过少的情况。

计算最小样本量的公式如下:

 

 

α和β分别是⼀类错误(拒真)和⼆类错误(取伪)的概率,通常取值为0.05和0.2

此时,

取值分别为1.98和0.84(这两个值是固定的,不需要计算)

所以以上公式还可以简化成:

 

 

Δ为两组数值均值之差,即为希望检测到的最小变化

σ为各组样本标准差

最小样本量计算工具:

举例:

当前按钮的点击转化率为50%,希望最小预期提升10%,即从50%提升到55%。预估需要1600左右的样本量。

 

 

六、流量分割

1)互斥实验

互斥组中的所有实验都不会共享用户,如果一个用户/设备命中了实验A,就不会命中该互斥组中的其他实验。

2)正交实验

每个独立实验为一层,一份流量穿越每层实验时,都会随机打散再重组,保证每层流量数量相同。该方式可减少实验之间的影响,且可节省流量。

 

 

七、确定实验时长

实验时长由以下因素决定:

1)最小样本量

2)可接受的实验桶的大小比例

3)周活

实验时长=最小样本量/周活*实验桶比例

除此以外,还要考虑一些情况:例如用户可能在工作日和周末特征/行为不一样,所以最少跑够7天;用户一开始可能觉得新奇所以转化率高,后续转化率才会趋于真实。

八、数据统计

绝对值指标推荐用T检验,相对值指标推荐用Z检验。

需要统计的结果:diff、p值、置信区间

1)算P值

也就是算当零假设成立时,观测到样本数据出现的概率。统计学上,将5%作为一个小概率事件,所以一般用5%来对比计算出来的P值。当P值小于5%时,拒绝零假设,即两组指标不同;反过来,当P值大于5%时,接受零假设,两组指标相同。

2)算置信区间

一般情况下,我们都会用95%来作为置信水平。也就是说,当前数据的估计,有95%的区间包含了总体参数的真值。这么说可能比较绕,我们可以简单理解成 总体数据有95%的可能性在这个范围内。

我们计算两组指标的差异值,如果我们算出的差异值置信区间不含0,我们就拒绝零假设,认为两组指标不同;但是如果包含0,我们则要接受零假设,认为两组指标相同。

 

 

九、得出结论

1)实验结果显著是否要推全?

1.需要达到最⼩样本量,以及实验运⾏到计算的实验周期之后再去校验显著性。(例如跑了一天,结果为显著提升,但是其实实验的样本量没有达到最小样本量,那就还要接着跑一跑)

2.除了核⼼指标,还需要考虑平台的红线指标(例如核心指标显著提升,但是对其他指标有负面作用,那要考虑全局再决定)

2)实验结果不显著怎么办?

看MDE最⼩检测效应(实验能够统计的最⼩差异粒度)

需要看当前的mde是否⾜够⼩:

如果⼤于我们的最⼩提升预期值,则说明ab试验的灵敏度不够,可以延⻓试验时间,让更多的样本量进来

如果⼩于我们的最⼩提升预期值,那么说明实验组就是不显著,⽴刻停 ⽌试验 mde计算公式

 

 

以上,希望对各位有帮助,欢迎评论交流~

posted @ 2024-05-09 15:07 DB乐之者 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 数据分析笔试中累加问题是非常常见的考题,今天我们用一个函数来搞定它 sum over(partition by 分组列 order by 排序列 rows between 开始位置 preceding and 结束位置 following) 其中'开始位置'和'结束位置'可配置参数:数据、curre 阅读全文
posted @ 2023-05-23 10:01 DB乐之者 阅读(426) 评论(0) 推荐(0) 编辑
摘要: 假设我有一个看起来像这样的蜂巢表: ID event order_num A red 2 A blue 1 A yellow 3 B yellow 2 B green 1 ... 我正在尝试使用 collect_list 为每个 ID 生成事件列表。所以类似于以下内容: SELECT ID, col 阅读全文
posted @ 2023-04-14 16:41 DB乐之者 阅读(1003) 评论(0) 推荐(0) 编辑
摘要: 建表语句,如下: DROP TABLE IF EXISTS dim_date_info; CREATE EXTERNAL TABLE dim_date_info( `date_id` STRING COMMENT '日', `week_id` STRING COMMENT '周ID', `week_ 阅读全文
posted @ 2023-04-10 13:27 DB乐之者 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 常用spark优化参数 强制使用spark engine set tqs.query.engine.type = sparkCli; set spark.yarn.priority = 4; 双写HDFS开启: set spark.shuffle.hdfs.enable=true; set spar 阅读全文
posted @ 2023-03-30 12:37 DB乐之者 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 背景我们知道clickhouse一般都是处理单表的数据,经常需要实现同环比等分析场景,这里提供两种方式:首先计算公式: 同比、环比分析是一对常见的分析指标,其增长率公式如下: 同比增长率 =(本期数 - 同期数) / 同期数 环比增长率 =(本期数 - 上期数) /上期数 1. 向大家介绍如何利用 阅读全文
posted @ 2023-03-28 19:58 DB乐之者 阅读(737) 评论(0) 推荐(0) 编辑
摘要: olap Druid :是一个实时处理时序数据的OLAP数据库,因为它的索引按照时间分片,查询的时候也是按照时间线去路由索引。 Kylin核心是Cube,Cube是一种预计算技术,基本思路是预先对数据作多维索引,查询时只扫描索引而不访问原始数据从而提速。 Presto:它没有使用MapReduce, 阅读全文
posted @ 2023-03-24 13:58 DB乐之者 阅读(815) 评论(0) 推荐(0) 编辑
摘要: 安装 Superset 和ClickHouse Superset 安装可以参考我之前的随笔 ClickHouse 安装 ClickHouse 的驱动包 pip install clickhouse-sqlalchemy 配置 ClickHouse 连接 选择 ClickHouse 这里我拿网上的大数 阅读全文
posted @ 2023-03-21 18:16 DB乐之者 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 解决的问题 在WIN10环境下,安装并正常运行Superset 建议使用Python虚拟环境,减少库依赖冲突 不需要安装VC啦! 注意 本教程安装的版本是1.5 Superset在2022年7月发布了2.0的大版本更新 如python的版本要求变为3.9+,同时增加了更多的库依赖等 以下教程未为对2 阅读全文
posted @ 2023-03-18 11:54 DB乐之者 阅读(766) 评论(0) 推荐(0) 编辑
摘要: 最近工作使用了一段时间的的数据库客户端 DBeaver,发现客户端显示时间不正确。时间保存之后发现日期经常自动-1。 这期间做了大量测试和分析,一开始以为时csv格式问题,反复导入最终查到是因为时区问题导致的日期-1,解决方式如下。 解决方法1: 或者在链接字符串后面增加这个参数亦可。 解决方法2: 阅读全文
posted @ 2023-03-06 09:18 DB乐之者 阅读(1347) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示