动态截断 table 个分区
Truncate table partitions dynamically
我们有一个包含简单时间序列数据的大型 U-SQL table。 table 每天分区。每当收到一批新数据时,我们需要插入新的时间序列数据点并用新值更新任何先前收到的数据点,以防新批次包含旧数据点的更新值。
由于我们无法使用 U-SQL 执行粒度更新或删除,我们只想截断受影响的分区并插入重新计算的每日值。我们执行合并的 U-SQL 脚本识别需要截断的分区。
不幸的是,由于我们无法在 U-SQL 中创建循环,因此似乎无法动态截断已识别的分区。我在别处找到的一个建议是将分区截断交给 PowerShell 脚本,但我真的很想将所有内容都保存在同一个 U-SQL 脚本中,以避免存储和检索临时行集。 .
我考虑过使用自定义 C# 函数,但 U-SQL SDK 似乎不允许 C# 函数到 access/modify 数据库元数据。还有其他选择吗?
SDK 允许您查询元数据,但不能操作对象。
另一种选择是您编写一个脚本,根据数据生成脚本,然后运行生成脚本。仍然意味着你写了两个脚本,但你真的不必存储临时数据。
你知道你可能需要更新多少个分区吗?
我们有一个包含简单时间序列数据的大型 U-SQL table。 table 每天分区。每当收到一批新数据时,我们需要插入新的时间序列数据点并用新值更新任何先前收到的数据点,以防新批次包含旧数据点的更新值。
由于我们无法使用 U-SQL 执行粒度更新或删除,我们只想截断受影响的分区并插入重新计算的每日值。我们执行合并的 U-SQL 脚本识别需要截断的分区。
不幸的是,由于我们无法在 U-SQL 中创建循环,因此似乎无法动态截断已识别的分区。我在别处找到的一个建议是将分区截断交给 PowerShell 脚本,但我真的很想将所有内容都保存在同一个 U-SQL 脚本中,以避免存储和检索临时行集。 .
我考虑过使用自定义 C# 函数,但 U-SQL SDK 似乎不允许 C# 函数到 access/modify 数据库元数据。还有其他选择吗?
SDK 允许您查询元数据,但不能操作对象。
另一种选择是您编写一个脚本,根据数据生成脚本,然后运行生成脚本。仍然意味着你写了两个脚本,但你真的不必存储临时数据。
你知道你可能需要更新多少个分区吗?