动态表的工作原理¶
创建动态表时,可以指定用于从一个或多个基对象或动态表转换数据的查询。自动刷新过程会定期执行此查询,并使用对基对象所做的更改来更新动态表。
此自动化过程计算对基对象所做的更改,并将这些更改合并到动态表中。若要执行此工作,该过程将使用与动态表关联的计算资源。 有关资源的更多信息,请参阅 了解动态表的成本。
创建动态表时,您可以为数据指定目标“新鲜度”(目标 滞后)。例如,您可以指定数据最多应比基表更新晚五分钟。基于此目标新鲜度,自动化过程会设置刷新,以便动态表中的数据在此目标内保持最新(即在基表更新后的五分钟内)。
如果数据不需要刷新,则可以指定更长的目标新鲜度时间以降低成本。例如,如果目标表中的数据最多只需要比基表的更新晚一小时,则可以将目标新鲜度指定为一小时(而不是五分钟)以降低成本。
何时使用动态表¶
有几种方法可以转换管道中的数据(例如,流和任务、CTAS、您自己的自定义解决方案)。动态表是一种数据转换的选项。
动态表最好在以下情况下使用:
您不需要编写代码来跟踪数据依赖项和管理数据刷新。
您不需要,也不想避免流和任务的复杂性。
您确实需要具体化多个基表的查询结果。
您需要构建多个表,以通过 ETL 管道转换数据。
不需要精细的刷新计划控制,只需为管道指定目标数据新鲜度。
您不需要使用不受支持的动态查询构造,例如 存储过程、未 在 完全刷新中支持的非确定性函数 中列出的非确定性函数或 外部函数,也不需要使用作为外部表、流或物化视图的动态表的源。
备注
动态表可用作流的源。 一起使用时,基于动态表的流的工作方式与任何其他流一样。有关其他信息和示例,请参阅 动态表与流、任务和物化视图的比较。