.create-or-alter 物化视图

使用 “版本 ”下拉列表切换服务。 了解有关导航的详细信息。
适用于:✅ Azure 数据资源管理器

创建具体化视图或更改现有的具体化视图。

权限

必须至少具有 Materialized View Admin 权限才能运行此命令。

语法

.create-or-alter materialized-view [ with(PropertyName=PropertyValue,...)] MaterializedViewNameon tableSourceTableName{查询}

详细了解语法约定。

参数

客户 类型 必需 说明
PropertyName、PropertyValue string 受支持属性列表中的一组属性(采用名称和值对形式)。
MaterializedViewName string ✔️ 具体化视图的名称。 视图名称不能与同一数据库中的表名或函数名冲突,并且必须遵循标识符命名规则。
SourceTableName string ✔️ 定义视图的源表的名称。
查询 string ✔️ 具体化视图的查询定义。

支持的属性

新建表

如果表是新的,则 with(PropertyName= PropertyValue) 支持以下属性。 所有属性都是可选的。

客户 类型 说明
回填 bool 是要根据 SourceTable 中当前存在的所有记录创建视图 (true),还是从当前时间开始创建视图 (false)。 默认值为 false。 有关详细信息,请参阅回填具体化视图。
effectiveDateTime datetime 仅在使用 backfill 时相关。 如果已设置,则创建仅回填日期时间后引入的记录。 backfill 也必须设置为 true。 应为此属性输入日期/时间文本,例如 effectiveDateTime=datetime(2019-05-01)。
updateExtentsCreationTime bool 仅在使用 backfill 时相关。 如果设置为 true,则会根据回填过程中的日期/时间分组键 分配 区创建时间。 有关详细信息,请参阅回填具体化视图。
lookback timespan 限制预期重复或更新的时间段的时间跨度。 有关详细信息,请参阅 回溯期。
lookback_column string 视图中的 string 列,用作回溯期的引用。 如果此列为空,但 lookback 具有值,则具体化视图使用默认回溯。 有关详细信息,请参阅 回溯期。
autoUpdateSchema bool 是否根据源表更改自动更新视图。 默认值为 false。 此选项仅对 arg_max(Timestamp, *)/arg_min(Timestamp, *)/take_any(*) 类型的视图(仅当列的参数为 * 时)有效。 如果此选项设置为 true,则对源表所做的更改将自动反映在具体化视图中。
dimensionTables 数组 一个动态参数,其中包含视图中维度表的数组。 请参阅查询参数。
文件夹 string 具体化视图的文件夹。
docString string 记录具体化视图的字符串。
allowMaterializedViewsWithoutRowLevelSecurity bool 允许在启用了行级安全策略的表上创建具体化视图。 只有类型为类型的arg_min/arg_max/arg_any视图所必需的。 有关详细信息,请参阅 行级别安全策略 。

现有表

如果表已存在,则 with(PropertyName= PropertyValue) 仅支持以下属性子集。 所有属性都是可选的。

客户 类型 说明
lookback timespan 限制预期重复或更新的时间段的时间跨度。 有关详细信息,请参阅 回溯期。
lookback_column string 视图中的 string 列,用作回溯期的引用。 如果未定义 lookback_column,则根据 ingestion_time()计算回溯期。 如果已定义 lookback_column,则无法修改其值。 有关详细信息,请参阅 回溯期。
autoUpdateSchema bool 是否根据源表更改自动更新视图。 默认值为 false。 此选项仅对 arg_max(Timestamp, *)/arg_min(Timestamp, *)/take_any(*) 类型的视图(仅当列的参数为 * 时)有效。 如果此选项设置为 true,则对源表所做的更改将自动反映在具体化视图中。
-- -- --
文件夹 string 具体化视图的文件夹。
docString string 记录具体化视图的字符串。

返回

输出架构:

客户 类型 说明
客户 string 具体化视图的名称。
SourceTable string 定义视图的源表的名称。
查询 string 具体化视图的查询定义。
MaterializedTo datetime 源表中的最大具体化 ingestion_time() 时间戳。 有关详细信息,请参阅具体化视图的工作原理。
LastRun datetime 上次运行具体化的时间。
LastRunResult string 上次运行的结果。 如果运行成功,则返回 Completed,否则返回 Failed。
IsHealthy bool false 仅当视图停滞时:
• 至少五次连续具体化尝试失败,并且 MaterializedTo 超过一小时,并且尚未赶上数据库游标。
• 视图状态为 FAILED。
• 一种正在赶上、处理引入突发或等待并发槽的视图, true即使其年龄超过一小时也是如此。
• 禁用的视图也可以显示为 true。 检查 IsEnabled 也。
已启用 bool 如果视图已启用,则为 true(请参阅禁用或启用具体化视图)。
文件夹 string 在其中创建具体化视图的文件夹。
DocString string 分配给具体化视图的说明。
AutoUpdateSchema bool 视图是否已启用自动更新。
EffectiveDateTime datetime 视图的生效日期时间,在创建期间确定(请参阅 .create materialized-view)。
回溯 timespan 限制预期重复或更新的时间段的时间跨度。 有关详细信息,请参阅 回溯期。
LookbackColumn string 视图中的 string 列,用作回溯期的引用。 如果此列为空,但 lookback 具有值,则具体化视图使用默认回溯。 有关详细信息,请参阅 回溯期。

示例

本节中的示例演示如何使用语法来帮助get started。

创建或更改具体化视图

以下示例创建一个新的具体化视图,或更改基于表 ArgMaxT 的现有视图。 它包含基于表 Timestamp每个用户的 T 列的最新记录。

.create-or-alter materialized-view ArgMax on table T
{
    T | summarize arg_max(Timestamp, *) by User
}

输出

客户 SourceTable 查询 MaterializedTo LastRun LastRunResult IsHealthy 已启用 文件夹 DocString AutoUpdateSchema EffectiveDateTime 回溯
ArgMax T T |summarize arg_max(Timestamp, *) by User 2023-02-26T16:40:03.3345704Z 2023-02-26T16:44:15.9033667Z 已完成 是 是 假 2023-02-23T14:01:42.5172342Z

备注

如果具体化视图不存在,此命令的行为就像 .create materialized-view一样。

有关详细信息,请参阅查询参数和属性部分。

限制

  • 不支持的更改:

    • 通过表达式对具体化视图组进行更改。
    • 更改列类型。
    • 重命名列。 例如,将 T | summarize count() by Id 的视图更改为 T | summarize Count=count() by Id 会删除 count_ 列并创建新列 Count(该列最初仅包含 null)。
  • 对现有数据的影响:

    • 更改具体化视图不会影响现有数据。
    • 向查询添加筛选器仅适用于新引入的记录,不会更改已具体化的记录。
      • 对于所有现有记录,新列都会收到 null,直到在 alter 命令后引入的记录修改 null 值。
      • 例如:T | summarize count() by bin(Timestamp, 1d) 的视图更改为 T | summarize count(), sum(Value) by bin(Timestamp, 1d)。 对于已在更改视图之前处理的记录的特定 Timestamp=T,sum 列将包含部分数据。 此视图仅包含在 alter 执行后处理的记录。