1700432151
4.3.1 使用MPP系统进行数据准备与评分
1700432152
1700432153
MPP能够给复杂分析带来巨大提升的原因是,复杂分析的主要困难都发生在数据处理阶段。在数据处理阶段,人们要对数据进行大量的连接与汇总,生成新的衍生数据并对数据进行各种转换。在这个过程中,来自不同数据源的各种数据实现了整合。连接在前面的章节已经介绍过了,而汇总则意味着把多条记录转换成一条记录,从而获得更全面的信息。例如,抽取客户的多条交易记录,计算客户的总体销售量与单次平均销售量。生成衍生指标与数据转换则包含一系列的复杂操作过程,如计算客户每次交易的各类占比,或使用log或平方根等数学函数以获得新的分析指标。
1700432154
1700432155
这些数据处理任务的逻辑通常来说并不复杂,这正是关系型数据库,以及结构化查询语言(Structured Query Language,SQL)适合执行的任务。对大多数分析而言,今天的SQL,即使不能支持所有也可以支持绝大部分的数据处理工作。SQL的使用正是库内处理理念在MPP系统的具体表现。分析师再也不需要把数据从数据库中抽取出来并通过分析工具进行处理,相反地,他们可以简单地通过撰写并提交SQL脚本,就可以把这些复杂的数据处理工作交给数据库执行。
1700432156
1700432157
仅仅在10年前,SQL还存在一些缺陷,难以支持高级分析需要的某些复杂计算。但现在,SQL已经强大了许多。事实上,SQL的一些限制条件已经不存在了,例如,SQL在处理某一行数据时不能了解其他行数据。现在已经出现了一些叫“窗口式汇集(Windowed Aggregates)”的SQL函数,它们可以在处理某一行数据的同时,对其他区域的数据进行查询。通过这些SQL函数,查询某一个交易是客户的第一次还是最后一次交易就很轻松了,这使得数据处理过程也发生了变化。某些高级分析工具为数据准备过程提供的处理过程,完全可以使用SQL的这些函数来实现。
1700432158
1700432159
在SQL拥有这个强大功能之前,为了进行必要的数据处理,人们不得不把数据从数据库中抽取出来。幸运的是,随着SQL的发展,已经不再需要这样做了。数据处理过程中的绝大部分操作都可以通过SQL在数据库内实现。最近也出现了一些新的整合处理方式,我们将会在后面进行讨论。
1700432160
1700432161
不要低估SQL!
1700432162
1700432163
在过去的这些年,SQL已经强大了很多,现在它可以胜任几乎所有的数据处理任务。分析专家可以使用SQL或者其他分析工具把数据处理过程提交给数据库执行,从而显著扩大了分析人员可以处理的数据规模,而这对于大数据格外重要。
1700432164
1700432165
作为库内处理理念的发展趋势,分析工具的很多厂商已经开始在分析软件中内置把分析流程提交给数据库执行的功能。在这些工具里,这些分析流程都已经开发好了,但是这些软件现在发现,如果可以连接到MPP数据库引擎,软件就可以把处理复杂任务的指令提交给数据库,让数据库来执行处理任务,而无需抽取大量数据。
1700432166
1700432167
分析工具将分析流程内置到数据库中的演进过程意味着,分析专家现在可以自由地选择他们感到顺手的、具有高度可扩展性的分析环境。与此同时,分析应用仍然在将更多的功能和特性集成到MPP数据库中,这将进一步增加库内分析的影响力。
1700432168
1700432169
库内处理也被广泛的用于各种评分模型。通常,我们会使用抽样数据来建立模型,但使用这个模型来进行评分,则需要针对全部数据。例如,通过部分抽样的客户数据建立了一个客户购买倾向的评分模型,到了应用这个模型时,则需要对所有客户进行评分,这样才能挑选出得分最高的客户来进行营销。把所有数据从数据库中抽取出来进行评分的传统做法,即使不是完全不可行,也是不实用的,因为抽取全部数据进行处理会耗费大量的时间。
1700432170
1700432171
让我们看一个更细节的例子。假如某一个零售商已经建立了一个倾向模型,来评估哪些客户更有可能参加某一次促销活动。这个模型通常是建立在抽样的客户数据上,可能只覆盖了几百名或者几千名客户。模型会使用对比的方法,分析历史上曾经参加过类似活动的客户与没有参加过类似活动的客户,进而建立一个评分的算法,计算出每个客户参加本次促销活动的概率。
1700432172
1700432173
在构建这个模型时,从数据库中抽取数据进行外部处理,这是可行的,因为这是一次性的行为,而且只涉及到部分抽样客户。当使用这个模型时,评分算法要对零售商的所有客户进行打分,这样才能精确识别那些最有可能响应促销活动的客户,这可能会涉及成千上万的客户。此外,这个评分过程通常还需要定期执行。在这种情况下,由于涉及所有的客户数据,把数据从数据库中抽取出来可能导致系统崩溃,而库内分析则可以避免这种现象的出现。
1700432174
1700432175
今天在数据准备与评估模型过程中,把处理过程提交给数据库执行的方法至少有4种:(1)直接提交SQL;(2)自定义函数(UDF);(3)嵌入式过程;(4)预测建模标记语言(PMML),接下来我们将逐个进行阐述。
1700432176
1700432177
1.直接提交SQL
1700432178
1700432179
SQL是MPP系统的母语,在各种要求与场景下都有很高的执行效率。在前面我们讨论过,SQL特别适合进行各种典型的数据操作,如关联、转换、整合等。很多核心的数据处理任务都可以通过编写SQL脚本来直接实现,用户也可以使用各种分析软件,让软件自动生成SQL脚本并提交给数据库执行。常用的分析模型与算法,其评分逻辑都不是很复杂,可以很容易地转换成SQL,如线性回归模型、逻辑回归模型、决策树模型等。分析工具可以帮助用户从这些分析模型中抽取出数据处理逻辑与过程,并将其转换为SQL。或者,有些时候,模型完成后用户也可以选择自己编写SQL。但不管是哪种情况,数据准备或评分过程都是全部通过SQL完成的。
1700432180
1700432181
2.自定义函数(UDF)
1700432182
1700432183
自定义函数(User-Defined Function,UDF)是关系型数据库的一个相关的新特性。UDF的处理能力大大超越了普通的SQL。UDF可以让用户自定义一些可以重复使用的数据处理逻辑,并像SQL自带函数一样自由地使用。
1700432184
1700432185
例如,要查询客户的销售总额,分析专家可能会写这样的SQL:
1700432186
1700432187
“Select Customer, Sum(sales) …”
1700432188
1700432189
如果要查询客户某一项属性的评分,使用UDF的SQL可能会是这样:
1700432190
1700432191
“Select Customer, Attrition_Score…”
1700432192
1700432193
在这个SQL语句里,“Attrition_Score”是一个已经被部署在关系型数据库内的自定义函数。这个函数可以在任何时候被使用,其内部包含比纯SQL更复杂的处理逻辑。
1700432194
1700432195
UDF通常使用C++或Java等编程语言进行开发。使用这些编程语言,使得编程语言的某些特性嵌入了SQL中,这让SQL获得了一些新的功能,而这些功能通过SQL往往是无法实现的。UDF的一个缺陷是,不少分析专家并不了解如何使用这些编程语言开发UDF,但幸运的是,很多分析工具都已经提供了自动生成这些函数的功能。这些分析工具可以帮助分析师生成合适的UDF,并将它部署在数据库里,分析师可以直接使用这些自定义函数。
1700432196
1700432197
3.嵌入式过程
1700432198
1700432199
嵌入式过程(Embedded Process)是另一种把处理任务提交给数据库执行的方法。嵌入式过程的集成程度要比刚才提到的自定义函数高得多。自定义函数是编写一段程序,并将其部署在数据库内,让其他的SQL语句能够随意地调用它。对使用者来说,这个分析函数与其他分析工具提供的原始代码没有什么不同,都可以在数据库中并发地调用。区别在于,分析工具提供的原始代码通常不得不转换为数据库语言,以提高在数据库内的处理效率。
[
上一页 ]
[ :1.70043215e+09 ]
[
下一页 ]