批预测查询
执行预测联接时,应将模型映射到新数据源,之后 Analysis Services 将基于模型中的模式针对新数据中的每一行进行预测。如果表或其他外部数据源中有许多信息,并且您要使用经过定型的模型来进行预测,则预测联接很有用。
可以通过以下方式基于现有模型创建批预测查询:
使用数据挖掘设计器。
使用模板。
以编程方式或者在另一个 Analysis Services 客户端中创建 DMX 语句。
如果通过使用数据挖掘设计器来创建批预测查询,则必须先将外部数据源定义为一个数据源视图。
如果使用 DMX 来创建预测联接,则可以通过使用 OPENQUERY、OPENROWSET 或 SHAPE 命令来指定外部数据源。DMX 模板中的默认数据访问方法是 OPENQUERY。有关这些方法的信息,请参阅 <source data query>。
无论您如何定义外部数据,指定的数据源都必须包含其数据与模型中的数据类似的列。但是,新的信息可以是不完整的。例如,您的客户列表可能包含年龄列,但不包含有关收入的信息。即使在为模型定型时使用了收入数据,仍可以将新数据映射到该模型并创建一个预测;但是,在某些情况下,缺少完整的信息可能会影响预测的质量。
为获得非常好的结果,应当在新数据与模型之间联接尽可能多的匹配列。但是,即使没有匹配项,查询也会成功。如果不联接任何列,则查询将返回边缘预测,这与不含 PREDICTION JOIN 子句的语句 SELECT <predictable-column> FROM <model> 是等效的。
处理预测查询的结果
预测查询与关系数据库中的查询不同。您添加到查询中的每个预测函数都返回它自己的行集。因此,当您针对一个事例进行预测时,结果可能是一个预测的值,以及包含其他详细信息的几个嵌套表列。
只要在一个查询中组合多个函数,返回结果都将组合为一个分层行集。但是,如果提供程序无法处理分层的行集,则可以通过在预测查询中使用 FLATTEN 关键字来对结果进行平展处理。
时序挖掘模型中的预测
在使用新数据和创建预测的方法这一方面,时序模型具有更高的灵活性。您既可以在需要创建预测时使用此模型,也可以向模型提供新数据,以基于最近的趋势更新预测。如果您添加新数据,则可以指定新数据的使用方式,以扩展或更换模型事例。
扩展模型事例时,应向时序模型添加新的事实数据,从而使进一步的预测基于新的组合序列。更换模型事例时,应保留定型后的模型,但将基础事例更换为新的一组事例数据。
无论您使用那种方法,预测的起点都总是原始序列的终点。
例如,假定您有一个现有的时序模型,它的上一年销售数据已定型。收集了几个月的新销售数据后,您决定更新今年的销售预测。您可以添加新数据并扩展模型以进行新预测,从而创建更新模型的预测联接。
或者,可以基于现有数据生成模型,然后创建将事例数据更换为新数据的预测联接。这在某些情况下是很有用的,例如,当一个存储缺少很多数据,并且您希望使用基于其他存储数据生成的模型来进行预测时。有关如何在时序模型上创建预测联接的详细信息,请参阅“查询时序模型”或 PredictTimeSeries (DMX)。