.create-or-alter materialized-view

适用于:✅Azure 数据资源管理器

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

权限

你必须至少具有具体化视图管理员权限才能运行此命令。

语法

.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 允许在启用了行级安全策略的表上创建具体化视图。

现有表

如果表已存在,则 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 当视图被认为正常时为 true,否则为 false。 如果视图在最后一小时之前被成功地具体化(MaterializedTo 大于 ago(1h)),则认为它是正常的。
已启用 bool 如果视图已启用,则为 true(请参阅禁用或启用具体化视图)。
文件夹 string 在其中创建具体化视图的文件夹。
DocString string 分配给具体化视图的说明。
AutoUpdateSchema bool 视图是否已启用自动更新。
EffectiveDateTime datetime 视图的生效日期时间,在创建期间确定(请参阅 .create materialized-view)。
回溯 timespan 限制预期重复或更新的时间段的时间跨度。 有关详细信息,请参阅 回溯期
LookbackColumn string 视图中的 string 列,用作回溯期的引用。 如果此列为空,但 lookback 具有值,则具体化视图使用默认回溯。 有关详细信息,请参阅 回溯期

示例

本节中的示例演示如何使用语法帮助你入门。

创建或更改具体化视图

以下示例创建一个新的具体化视图,或更改基于表 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=Tsum 列将包含部分数据。 此视图仅包含在 alter 执行后处理的记录。