基本的预测查询设计
创建预测时,通常会提供一些新数据,并要求模型基于新数据生成一个预测。
在批预测查询中,可通过使用“预测联接” 将模型映射到外部数据源。
在单独预测查询中,可键入一个或多个值以用作输入。 您可以使用单独预测查询来创建多个预测。 但是,如果您需要创建多个预测,那么使用批查询时的性能会更好。
单独预测查询和批预测查询都使用 PREDICTION JOIN 语法来定义新数据。 这两者的区别在于指定预测联接的输入端的方式。
在批预测查询中,数据来自使用 OPENQUERY 语法指定的外部数据源。
在单独预测查询中,数据是作为查询的一部分内联提供的。
对于时序模型,不总是需要输入数据;可以仅使用模型中现有的数据进行预测。 但是,如果您指定了新的输入数据,则必须确定是使用新数据更新和扩展模型,还是替换模型中已使用的原始数据序列。 有关这些选项的详细信息,请参阅 Time Series Model Query Examples。
添加预测函数
除了预测值,您还可以自定义预测查询,以返回与预测有关的各种类型的信息。 例如,如果预测创建向客户推荐的产品的列表,则您还可能要返回每项预测的概率,以便可以对预测进行排名并且仅向用户展示最有价值的建议。
为此,您将向添加查询“预测函数” 。 每个模型或查询类型都支持特定的函数。 例如,聚类分析模型支持特殊预测函数,这些函数提供有关模型创建的分类的额外详细信息,而时序模型具有计算随时间的变化的函数。 还有可处理几乎所有模型类型的通用预测函数。 有关不同类型的查询中支持的预测函数的列表,请参阅本主题 DMX 参考: 常规预测函数 (DMX) 。
创建单独预测查询
如果要实时创建快速预测,则单独预测查询很有用。 一种常见情形可能是,您也许已通过使用网站上的窗体从客户获取了信息,希望提交这些数据作为单独预测查询的输入。 例如,当客户从列表中选择产品时,您可以使用所选内容作为预测最佳建议产品的查询的输入。
单独预测查询不需要包含输入的单独表。 而应将一行或多行值作为对模型的输入提供,并且将实时返回一个或多个预测。
警告
尽管名称如此,单一实例预测查询不只是进行单个预测,还可以为每个输入集生成多个预测。 并且可以通过为每个输入事例创建一个 SELECT 语句并将它们与 UNION 操作符相结合,提供多个输入事例。
创建单独预测查询时,必须以 PREDICTION JOIN 的形式向模型提供新数据。 这意味着即使不映射到实际表,也必须确保新数据与挖掘模型中的现有列匹配。 如果新数据列和新数据完全匹配,SQL Server Analysis Services将映射列。 这称为“NATURAL PREDICTION JOIN” 。 但是,如果列不匹配,或者新数据在类型和量上与模型所包含的数据并不相同,则必须指定模型中的哪些列映射到新数据,或者指定缺少的值。
批预测查询
如果您有想用来进行预测的外部数据,则批预测查询很有用。 例如,您可能已构建一个按客户的联机活动和购买历史记录对客户进行分类的模型。 您可以向最新获取的销售线索列表应用该模型,以创建销售投影或标识建议活动的目标。
当您执行预测联接时,必须将模型中的列映射到新数据源中的列。 因此,您选择作为输入的数据源所含数据必须与模型中的数据有些相似。 新信息不必完全匹配,也可以不完整。 例如,假定已使用与收入和年龄有关的信息对模型进行了定型,但您用于预测的客户列表具有年龄信息,却没有与收入有关的任何信息。 在此情况下,您仍可以将新数据映射到模型,并且为每个客户创建预测。 但是,如果收入已是模型的重要预测因子,则信息不完整将会影响预测的质量。
为获得最佳结果,应当在新数据与模型之间联接尽可能多的匹配列。 但是,即使没有匹配项,查询也会成功。 如果不联接任何列,则查询将返回边缘预测,这与不含 PREDICTION JOIN 子句的语句 SELECT <predictable-column> FROM <model> 是等效的。
成功映射所有相关列后,可以运行查询,SQL Server Analysis Services根据模型中的模式对新数据中的每个行进行预测。 可以将结果保存回包含外部数据的数据源视图中的新表,也可以复制并粘贴正在使用SQL Server Data Tools或SQL Server Management Studio的数据。
警告
如果在SQL Server Data Tools中使用设计器,必须先将外部数据源定义为数据源视图。
如果使用 DMX 来创建预测联接,则可以通过使用 OPENQUERY、OPENROWSET 或 SHAPE 命令来指定外部数据源。 DMX 模板中的默认数据访问方法是 OPENQUERY。 有关这些方法的信息,请参阅 <源数据查询>。




