将预测函数应用于模型

适用于:SQL Server 2019 及更早版本的 Analysis Services Azure Analysis Services Fabric/Power BI Premium

重要

数据挖掘在 SQL Server 2017 Analysis Services 中已弃用,现在在 SQL Server 2022 Analysis Services 中已停止使用。 对于已弃用和停止使用的功能,文档不会更新。 若要了解详细信息,请参阅 Analysis Services 后向兼容性

若要在 SQL Server 数据挖掘中创建预测查询,必须先选择查询将基于的挖掘模型。 可以选择当前项目中存在的任何挖掘模型。

选择模型后,可向查询添加 预测函数 。 预测函数可用于获取预测,但也可以添加会返回相关统计信息的预测函数,如预测值的概率或用于生成预测的信息。

预测函数可返回以下类型的值:

  • 可预测属性的名称和预测到的值。

  • 有关预测值的分布和方差的统计信息。

  • 指定结果或所有可能结果的概率。

  • 探顶分数或探底分数,探顶值或探底值。

  • 与指定节点、对象或属性关联的值。

可用的预测函数的类型取决于正在使用的模型类型。 例如,应用于决策树模型的预测函数可以返回规则和节点说明;时序模型的预测函数可以返回特定于时序的滞后时间和其他信息。

有关几乎所有模型类型支持的预测函数的列表,请参阅 常规预测函数 (DMX)

有关如何查询特定类型的挖掘模型的示例,请参阅 数据挖掘算法 (Analysis Services - 数据挖掘) 中的算法参考主题。

选择用于预测的挖掘模型

  1. 在SQL Server Management Studio,右键单击模型,然后选择“生成预测查询”。

    -- 或者 --

    在SQL Server Data Tools中,单击“挖掘模型预测”选项卡,然后单击“挖掘模型”表中的“选择模型”。

  2. “选择挖掘模型” 对话框中,选择挖掘模型,然后单击 “确定”

    可以选择当前SQL Server Analysis Services数据库中的任何模型。 若要使用其他数据库中的模型创建查询,则必须在该数据库的上下文中打开新查询窗口,或打开包含该模型的解决方案文件。

向查询添加预测函数

  1. “预测查询生成器”中,通过在 “单独查询输入” 对话框中提供值或将模型映射到外部数据源来配置用于预测的输入数据。

    有关详细信息,请参阅 为预测查询选择和映射输入数据

    警告

    无需提供用于生成预测的输入。 当没有输入时,算法通常将返回所有可能的输入中可能性最大的预测值。

  2. 单击 “源” 列,然后从列表中选择一个值:

    说明
    <模型名称> 选择此选项将在输出中包含挖掘模型的值。 只能添加可预测的列。

    从模型添加列时,返回的结果是该列中值的重复列表。

    使用此选项添加的列将包含在生成的 DMX 语句的 SELECT 部分。
    Prediction Function 选择此选项将浏览预测函数的列表。

    您选择的值或函数将添加到生成的 DMX 语句的 SELECT 部分。

    已选择的模型的类型不会筛选或约束预测函数的列表。 因此,如果对当前模型类型是否支持该函数有任何疑问,则可以只将函数添加到列表并查看是否出错。

    前置有 $ 的列表项(如 $AdjustedProbability)表示在使用函数 PredictHistogram时输出的嵌套表中的列。 这些是可用于返回单个列而不返回嵌套表的快捷方式。
    自定义表达式 选择此选项将键入自定义表达式然后向输出分配别名。

    自定义表达式将添加到生成的 DMX 预测查询的 SELECT 部分。

    如果要为每行的输出添加文本、调用 VB 函数或调用自定义存储过程,则此选项会很有用。

    有关使用 DMX 中的 VBA 和 Excel 函数的信息,请参阅 MDX 和 DAX 中的 VBA 函数
  3. 在添加每个函数或表达式后,切换到 DMX 视图可查看该函数在 DMX 语句中的添加方式。

    警告

    在您单击 “结果”之前,预测查询生成器不会验证 DMX。 通常,您会发现查询生成器所生成的表达式不是有效 DMX。 典型的原因是,引用的列与可预测列不相关或尝试预测嵌套表中的列(这需要嵌套 SELECT 语句)。 此时,您可以切换到 DMX 视图并继续编辑该语句。

示例:创建对聚类分析模型的查询

  1. 如果没有可用于生成此示例查询的聚类分析模型,请使用 数据挖掘基础教程创建 [TM_Clustering] 模型。

  2. 在SQL Server Management Studio中,右键单击模型[TM_Clustering],然后选择“生成预测查询”。

  3. “挖掘模型” 菜单中选择 “单独查询”

  4. “单独查询输入” 对话框中,将以下值设置为输入:

    • Gender = M

    • Commute Distance = 5-10 miles

  5. 在查询网格中,为“源”选择 TM_Clustering 挖掘模型并添加列 [Bike Buyer]。

  6. “源”选择 “预测函数”并添加函数 Cluster

  7. 为“源”选择“预测函数”,添加函数 PredictSupport,并将模型列 [Bike Buyer] 拖入“条件/参数”框。 在“别名”列中键入 Support

    从“条件/参数”框复制表示预测函数和列引用的表达式。

  8. “源”选择 “自定义表达式”,键入别名,然后使用以下语法引用 Excel CEILING 函数:

    Excel![CEILING](<arguments) as <return type>  
    

    将列引用作为该函数的参数粘贴。

    例如,下面的表达式返回支持值的 CEILING:

    EXCEL!CEILING(PredictSupport([TM_Clustering].[Bike Buyer]),2)  
    

    “别名” 列中键入 CEILING。

  9. 单击 “切换到查询文本视图” 检查生成的 DMX 语句,然后单击 “切换到查询结果视图” 查看预测查询输出的列。

    下表显示了预期的结果:

    Bike Buyer $Cluster Support CEILING
    0 群集 8 954 953.948638926372

如果要在 语句中的其他位置添加其他子句,例如,如果要添加 WHERE 子句,则无法使用网格添加该子句;必须先切换到 DMX 视图。

另请参阅

数据挖掘查询