具体化视图和存储函数

已完成

虽然通常可以通过查询表和使用内置函数和运算符来实现分析目标,但 KQL 提供了一些高级功能,可用于创建封装常用数据或逻辑的新对象。

具体化视图

具体化视图是源表或其他具体化视图的数据汇总。 该视图封装了 summarize 语句。

例如,以下语句创建了具体化视图,其中包含每个供应商每天的行程数。

.create materialized-view TripsByVendor on table Automotive
{
    Automotive
    | summarize trips = count() by vendor_id, pickup_date = format_datetime(pickup_datetime, "yyyy-MM-dd")
}

运行此语句将创建具体化视图,但不会立即使用现有表中的数据填充该视图。 视图将在新数据引入源表时被填充。 若要引入现有数据,可以使用异步操作通过回填选项创建具体化视图,如下所示

.create async materialized-view with (backfill=true)
TripsByVendor on table Automotive
{
    Automotive
    | summarize trips = count() by vendor_id, pickup_date = format_datetime(pickup_datetime, "yyyy-MM-dd")
}

创建和填充具体化视图后,可以像查询表一样查询它。

TripsByVendor
| project pickup_date, vendor_id, trips
| sort by pickup_date desc

具体化视图列在 KQL 数据库的具体化视图文件夹中,你在 Eventhouse 页面中定义了这些视图

存储函数

KQL 包括将查询封装为函数的功能,简化了常见查询的重复使用。 还可以为函数指定参数,以便可以使用变量值重复相同的查询。

若要创建函数,请使用 .create-or-alter 函数 KQL 命令。 例如,以下函数检索至少有指定乘客人数的行程的行程 ID 和上车时间:

.create-or-alter function trips_by_min_passenger_count(num_passengers:long)
{
    Automotive
    | where passenger_count >= num_passengers 
    | project trip_id, pickup_datetime
}

若要调用函数,请像表格一样使用它。 在此示例中,trips_by_min_passenger_count 函数用于查找至少有三名乘客的 10 次行程:

trips_by_min_passenger_count (3)
| take 10