明细模型(Duplication Model)每条数据都会被完整地存储,不进行任何聚合操作。适用于需要保存完整数据的场景,例如日志数据、事件数据等。在存储时,数据按照导入的顺序存储,不做去重处理。
本模型的优点在于:所有的输入数据都被存储,保留了数据的完整性和原始性;而且适用于多种查询类型,不需要预先定义聚合逻辑。但是也有占用存储空间大,查询效率低的缺点。
聚合模型(Aggregation Model)聚合模型适用于需要对数据进行预聚合的场景。通过在写入时进行预聚合,可以大大减少查询时的计算量,提高查询性能。支持SUM、MIN、MAX、REPLACE、HLL等多种聚合函数。
模型优点在于占用存储空间小,因为数据已经经过预先聚合,大幅减少了数据量,而由此该模型也具备较高的查询效率。同样的,聚合的需求也造成模型灵活性低,需要预先定义聚合逻辑,后续修改较为复杂。以及由于数据被聚合,而导致数据精度的损失的缺点。
主键模型(Unique Key Model)主键模型适用于需要对数据进行更新和删除操作的场景。通过主键来唯一标识每条记录,可以实现对数据的高效更新。由于主键一定是无重复的,所以在该模型 ...
Presto中的SQL查询优化Presto的优缺点:
优点
Presto 与 Hive 对比,都能够处理 PB 级别的海量****数据分析,但 Presto 是基于内存运算,减少没必要的硬盘 IO,所以更快。**
能够连接多个数据源,跨数据源连表查,如从 Hive 查询大量网站访问记录,然后从 Mysql 中匹配出设备信息**。
缺点
虽然能够处理 PB 级别的海量数据分析,但不是代表 Presto 把 PB 级别都放在内存中计算的。而是根据场景,如 count,avg 等聚合运算,是边读数据边计算,再清内存,再读数据再计算,这种耗的内存并不高。但是连表查,就可能产生大量的临时数据,因此速度会变慢,反而 Hive此时会更擅长。
为了达到实时查询,可能会想到用它直连 MySql 来操作查询,这效率并不会提升, 瓶颈依然在 MySql,此时还引入网络瓶颈,所以会比原本直接操作数据库要慢。
Presto SQL优化
过滤条件优先使用分区字段:对于有分区的表,WHERE 语句中优先使用分区字段进行过滤。
GROUP BY 语句优化:合理安排 GROUP BY 语句中字段顺序对 ...
视图要点视图是一种虚拟存在的表,并且是动态生成的,只保存了SQL逻辑,不保存查询结果,它具有以下的一些特征:
虚拟表、和普通表一样使用
临时性:临时组建的表格,
可以重复利用
当我们遇到多个地方用到同样的查询结果或者该查询结果使用的SQL语句较复杂等情况时,我们就可以用视图来处理。
由此很容易让我们产生思考,既然视图并不保存数据,当我们修改视图中的数据时,会发生什么?
先来说结论:更新视图里面的数据,视图的更新实际上是对基本表增加或者删除记录,一般情况下都不建议对视图进行操作。
不管是update、delete还是insert,在常规情况下的修改都会直接修改原表中的数据,但是有一些特殊情况:
比如原表t有一列:column,在视图中,我们就create view v1 as select column c1, column c2 from t;此时v1中,有c1、c2两列全部对应原表的column列,此时如果insert(100,200),插入不一致的列,会有冲突导致插入失败。
总之,会导致数据不满足表定义限制时的修改就会失败。
其他不可更新的视图类型视图的可更新性和视图中查询 ...
本人15届蓝桥杯python组国一,并且不是计算机专业科班出身,本科是管科,学习了一些简单的python,硕士跨考金融,也没有进一步进行计算机的学习。比赛前也没进行太多的真题训练,只是在leetcode上练了几个常见算法,准备了一些可能会用到的算法代码,下面分享下我的一些考试经验:
准备考蓝桥杯,一些需要准备且牢记的要点
注意0,1等边界位置。在各种需要遍历数组的算法中,通常在边界处有不一样的处理方式,尤其要思考在数组最开头能否满足算法要求。
装饰器@cache可以加速,记录算过的东西,是很好用的减少时间的方法。
一切皆可发生,多加几个判断不费时间,判断比如输入为空列表,输入为只有1等特殊情况的处理方式。
蓝桥杯偏向于思维,算法较少。(根据往年经验,dp + 搜索 + 数论 + 枚举 就是所有知识点 )
时间复杂度过高,也是可以把代码写上去,得到一部分分数。
对于特殊值一定要优先考虑,可获得一部分分数。
没有思路的题,直接暴力枚举,可以获得一部分分数。
一些可能帮到大家的算法集合排序算法在蓝桥杯的题型里,它不会让你直接去实现某个算法,而是用一个实际案例中让你使用排序 ...
OLTP与OLAP概念在业务数据处理的早期,对数据库的写入往往对应着发生了一次真实的商业交易:银行转账(要从A账户扣100,并向B账户加100),支付工资等。后续随着数据库的应用越来越广泛,开始用来存储博客的评论、游戏进度等等,但是其访问模式没有变化,主要是执行基本的事务处理,对应于数据库记录的增删改查。这种访问模式被称为:联机事务处理(On-line transaction processing,OLTP)。
现在,数据库也开始越来越多地用于数据分析,通常,用于分析的查询需要扫描大量的数据(比如一个月,一个季度等),并聚合得到统计数据,帮助公司管理层做出更好的决策(business intelligence,商业智能 BI),区别于联机事务处理,这种侧重于分析场景的访问模式被称为:联机分析处理(On-Line Analytical Processing,OLAP)。
起初,同一个数据库既用于事务处理,也用于分析查询(例如,Mysql)。但是随着数据量的爆炸式增长,在90年代初,各个公司出现了一种 OLTP 与 OLAP 场景分离的趋势,即用专门的数据库来支撑决策分析的 OLAP场景任 ...
Hive宏参数设置1234567891011121314# 表示开启动态分区set hive.exec.dynamic.partition=true;# 表示动态分区模式:strict(需要配合静态分区一起使用)、nostrict# strict: insert into table students_pt partition(dt='anhui',pt) select ......,pt from students;hive> set hive.exec.dynamic.partition.mode=nostrict;# 表示支持的最大的分区数量为1000,可以根据业务自己调整set hive.exec.max.dynamic.partitions.pernode=1000;# 开启分桶set hive.enforce.bucketing=true;
Hive建表基础语法123456789101112131415161718192021222324CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name / ...
SQL3 查询结果去重题目连接
12select distinct university from user_profile
关键点:
使用DISTINCT关键字可以在查询中进行去重
同样,DISTINCT关键字也可以用在count()等聚合函数中,进行去重统计count(distinct field)
SQL4 查询结果限制返回行数题目链接
123select device_id from user_profile limit 2
关键点:
使用limit关键字可以限制查询的行数
检索记录行 6-10:SELECT * FROM table LIMIT 5,5
检索记录行 11-last:SELECT * FROM table LIMIT 10,-1
检索前 5 个记录行:SELECT * FROM table LIMIT 5
SQL8 查找某个年龄段的用户信息题目链接
1234select device_id, gender, agefrom user_profile# where age between 20 and 23where age>=20 and ...
背景在国债期货到期日,现货市场往往存在多个符合交割标准的债券,国债期货在交割中设计了转换因子制度。在转换因子制度下,每只可交割债券都有其相应的转换因子,通过转换因子可计算该可交割债券的交割价格。
要理解国债期货转换因子这个概念,还需要对国债期货本身的特征有一定的了解。首先要了解国债期货中的标准券:国债期货是标准化合约,合约标的是一个名义标准券,也可以说是虚拟券,这个设计的最大功能,就是可以扩大可交割国债的范围,增强价格的抗操纵性,减小交割时的逼仓风险。但是事实上,国债期货采用实物交割,空头交割时理论上需要用名义标准券去履约。但现实中名义标准券并不存在,因而交易所规定可以使用现实中存在的、满足一定期限要求的一篮子国债均可进行交割。但是在金融市场中,金融产品在价格上必须满足一对一的映射才能保证定价体系的平衡,否则会出现无风险套利机会。转换因子(Conversion Factor, CF) 就是实现一对一映射的纽带。
在我国各类国债期货中,他们对应的标准券如下:
2年期国债期货合约标的:面值为200万元人民币、票面利率为3%的名义中短期国债;
5年期国债期货合约标的是:面值为100万元人 ...
项目简介数据以及相关信息是在Kaggle上获取的
Credit Fraud || Dealing with Imbalanced Datasets | Kaggle
数据介绍本数据集包含欧洲持卡人在2013年9月中的某两天发生的信用卡交易,其中 284,807 笔交易中有 492 笔欺诈。数据集展现出高度不平衡的性质,正类(欺诈)占所有交易的 0.17%。
12345df=pd.read_csv('creditcard.csv')print(len(df[df['Class']==0]),len(df[df["Class"]==1]))plt.pie([len(df[df['Class']==0]),len(df[df["Class"]==1])],labels=['正常交易','欺诈'],autopct= '%1.2f%%')plt.show()
整个数据包含Time、Amount、V1、V2、…V28以及Class共31 ...
所谓Fair price就是我们通过模型和经验预测的资产在某一时间点的真实价值。所以交易的本质内在逻辑就是当市场价高于Fair price就卖出,否则就买入。
手机上展示效果较差,本篇博客建议在电脑浏览器中阅读
基本思路不管是用哪一方的策略,我们本质并不是通过预测资产的趋势来获取资本利得,而是通过频繁的交易获得资产波动时的价差。所以如果大量持有某一方向的头寸,会导致我们承受资产价格波动的风险,而且对于资金的利用不够完全,损失掉很多盈利机会。
因此,当我们的某一资产相对较多时,可以调低我们对他的fair price,让我们更容易将其卖掉,更难买入,直到两者平衡。基本思路就是将左图所示变化为右图所示,具体使用曲线函数还是分段线性函数需要具体尝试,也是我们不断优化策略的角度。
下面就给出了一个简单的调整方案可以参考,大家也可以调整参数看看变化情况。具体的,我们只需要保证买入价格高于卖出价格,曲线向左下倾斜即可。手机上展示效果较差,请在电脑浏览器中访问(若没加载出来稍等一下)
其他细节
具体看上图,图中的每个价格其实是每个相对资产对应的,也就是如果我们买卖100单位资产,其中每一单位资 ...