数据集统计信息计算
您现在可以使用Azure Data Lake Storage SQL命令计算COMPUTE STATISTICS (ADLS)数据集的列级统计信息。 用于计算数据集统计信息的SQL命令是ANALYZE TABLE命令的扩展。 有关ANALYZE TABLE命令的完整详细信息可在厂蚕尝参考文档中找到。
要查看使用ANALYZE TABLE COMPUTE STATISTICS命令计算的统计信息,可以对别名或统计信息ID使用SELECT查询。 您还可以将统计分析的范围限制为整个数据集、数据集的子集、所有列或列的子集。
COMPUTE STATISTICS、FILTERCONTEXT和FOR COLUMNS命令。 当前,只有ADLS表支持ANALYZE TABLE命令的这些扩展。 有关详细信息,请参阅SQL语法指南的ANALYZE TABLE部分。本指南可帮助您构建查询,以便计算ADLS数据集的列统计信息。 使用这些命令,可以使用SQL查询通过PSQL客户端查看会话中生成的统计信息。
计算统计信息 compute-statistics
已向ANALYZE TABLE命令添加了其他构造,该命令允许您?计算数据集子集和某些列的统计信息。 要计算数据集统计信息,必须使用ANALYZE TABLE <tableName> COMPUTE STATISTICS格式。
下面显示的示例用于计算adc_geometric数据集以及数据集中? 所有 ?列的统计信息。
ANALYZE TABLE adc_geometric COMPUTE STATISTICS;
            COMPUTE STATISTICS命令不支持数组或映射数据类型。 如果输入数据框架具有带数组的列并映射数据类型,则可以设置skip_stats_for_complex_datatypes标志以接收通知或出错。 默认情况下,该标记设置为true。 要启用通知或错误,请使用以下命令: SET skip_stats_for_complex_datatypes = false。创建别名 alias-name
由于计算结果可能是大量数据,直接在控制台输出中返回计算数据是不合理的。 虽然别名是可选的,但建议您在计算统计信息时使用别名作为最佳实践。 在语句中提供别名,以描述性引用SQL查询中的结果。 或者,自动生成的Statistics ID用于存储计算的信息。
下面的示例将输出计算统计信息存储在alias_name中以供以后参考。 运行ANALYZE TABLE命令后,查询中使用的别名即可供参考。
ANALYZE TABLE adc_geometric COMPUTE STATISTICS AS alias_name;
            上述示例的输出为SUCCESSFULLY COMPLETED, alias_name。 控制台输出在响应analyze table compute statistics命令时不显示统计信息。 要查看详细结果,必须对别名或统计信息ID使用SELECT查询。
查看已计算统计信息的输出 view-output-of-computed-statistics
如果您未提前提供别名,查询服务将自动为Statistics ID生成一个格式为<tableName_stats_{incremental_number}>的名称。 如果提供了别名,则该别名会显示在Statistics ID列中。
COMPUTE STATISTICS查询的示例输出如下所示:
| Statistics ID         |
| --------------------- |
| adc_geometric_stats_1 |
(1 row)
            然后,您可以通过引用? 直接 ?查询计算的统计信息Statistics ID。 下面的示例语句允许您在与Statistics ID或别名一起使用时完整查看输出。
SELECT * FROM adc_geometric_stats_1;
            计算的统计信息输出可能与下面的示例类似。
 columnName                                                 |      mean      |      max       |      min       | standardDeviation | approxDistinctCount | nullCount | dataType
|------------------------------------------------------------+----------------+----------------+----------------+-------------------+---------------------+-----------+-----------
 marketing.trackingcode                                     |            0.0 |            0.0 |            0.0 |               0.0 |              1213.0 |         0 | String
 _experience.analytics.customdimensions.evars.evar13        |            0.0 |            0.0 |            0.0 |               0.0 |              8765.0 |        20 | String
 _experience.analytics.customdimensions.evars.evar74        |            0.0 |            0.0 |            0.0 |               0.0 |                11.0 |         0 | String
 web.webpagedetails.name                                    |            0.0 |            0.0 |            0.0 |               0.0 |                 1.0 |         0 | String
 _experience.analytics.event1to100.event8.value             |            5.0 |         9077.0 |          123.0 |              10.0 |              1001.0 |        80 | Double
 search.ispaid                                              |            0.0 |            0.0 |            0.0 |               0.0 |                 1.0 |         0 | Boolean
 commerce.productlistviews.value                            |            0.0 |            0.0 |            0.0 |               0.0 |                 0.0 |        10 | Double
 device.typeid                                              |            0.0 |            0.0 |            0.0 |               0.0 |                 0.0 |        10 | String
 commerce.purchases.value                                   |          765.0 |        98760.0 |         -980.0 |              32.0 |                99.0 |        90 | Double
 _experience.analytics.customdimensions.props.prop45        |            0.0 |            0.0 |            0.0 |               0.0 |                 1.0 |         0 | String
 environment.browserdetails.javaenabled                     |            0.0 |            0.0 |            0.0 |               0.0 |                 1.0 |         0 | Boolean
 timestamp                                                  |            0.0 |            0.0 |            0.0 |               0.0 |                98.0 |         3 | Timestamp
(12 rows)
            显示统计分析元数据 show-statistics
您可以使用SHOW STATISTICS命令显示会话中生成的所有临时统计数据的元数据。 此命令可帮助您优化统计分析的范围。
下面显示了SHOW STATISTICS的示例输出。
      statsId         |   tableName   | columnSet |         filterContext       |      timestamp
|----------------------+---------------+-----------+-----------------------------+--------------------
adc_geometric_stats_1 | adc_geometric |   (age)   |                             | 25/06/2023 09:22:26
demo_table_stats_1    |  demo_table   |    (*)    |       ((age > 25))          | 25/06/2023 12:50:26
age_stats             | castedtitanic |   (age)   | ((age > 25) AND (age < 40)) | 25/06/2023 09:22:26
            下面提供了元数据列名的说明。
statsIdCOMPUTE STATISTICS命令生成的临时统计信息表。tableNamecolumnSetfilterContexttimestamp可以使用该统计信息ID或别名在该会话中随时通过SELECT语句查找计算的统计信息。 生成的统计信息ID和统计信息仅对此特定会话有效,不能跨不同的PSQL会话访问。 计算的统计信息当前不是持久的。 有关更多详细信息,请参阅有关如何查看计算统计信息的输出的部分。
限制包含的列 limit-included-columns
要集中分析,您可以通过按名称引用特定数据集列来计算这些列的统计信息。 使用FOR COLUMNS (<col1>, <col2>)语法定位特定列。 以下示例计算数据集commerce的列id、timestamp和tableName的统计信息。
ANALYZE TABLE tableName COMPUTE STATISTICS FOR columns (commerce, id, timestamp);
            您可以计算任何根级别或嵌套列的统计信息。 以下示例演示了这些引用。
ANALYZE TABLE adcgeometric COMPUTE STATISTICS FOR columns (commerce, commerce.purchases.value, commerce.productListAdds.value);
            添加时间戳筛选条件 filter-condition
要根据时间顺序集中分析列,您可以添加时间戳筛选条件。 此条件可用于过滤掉历史数据或集中特定时段的数据分析。 FILTERCONTEXT命令根据您提供的筛选条件计算数据集子集的统计信息。
在以下示例中,对数据集tableName的所有列计算统计信息,其中列时间戳的值介于指定的范围2023-04-01 00:00:00和2023-04-05 00:00:00之间。
ANALYZE TABLE tableName FILTERCONTEXT (timestamp >= to_timestamp('2023-04-01 00:00:00') and timestamp <= to_timestamp('2023-04-05 00:00:00')) COMPUTE STATISTICS FOR ALL COLUMNS;
            您可以将列限制和过滤器结合使用,为数据集列创建高度特定的计算查询。 例如,以下查询计算数据集commerce的列id、timestamp和tableName的统计信息,其中列时间戳的值介于指定的范围2023-04-01 00:00:00和2023-04-05 00:00:00之间。
ANALYZE TABLE tableName FILTERCONTEXT (timestamp >= to_timestamp('2023-04-01 00:00:00') and timestamp <= to_timestamp('2023-04-05 00:00:00')) COMPUTE STATISTICS FOR columns (commerce, id, timestamp);
            后续步骤 next-steps
通过阅读本文档,您现在可以更好地了解如何使用SQL查询从ADLS数据集生成列级统计信息。 建议您阅读厂蚕濒语法指南,以了解51黑料不打烊 Experience Platform查询服务的更多功能。