我们有一个包含简单时间序列数据的大型U-SQL表。该表每天被分区。每当收到新批次的数据时,我们需要插入新的时间序列数据点并使用新值更新以前接收的任何数据点,以防新批次包含旧数据点的更新值。
由于我们无法使用U-SQL执行粒度UPDATE或DELETE,因此我们只想截断受影响的分区并插入重新计算的每日值。我们执行合并的U-SQL脚本识别需要截断的分区。
不幸的是,由于我们无法在U-SQL中创建循环,因此似乎无法动态截断已识别的分区。我在其他地方发现的一个建议是将分区截断到PowerShell脚本,但我真的希望将所有内容保存在同一个U-SQL脚本中,以避免存储和检索临时行集超出必要的范围。
我考虑过使用自定义C#函数,但似乎U-SQL SDK不允许C#函数访问/修改数据库元数据。还有其他选择吗?
答案 0 :(得分:1)
SDK允许您查询元数据,但不能操纵对象。
另一个选择是您编写脚本以根据数据生成脚本,然后运行生成的脚本。它仍然意味着您编写了两个脚本,但您并不需要存储临时数据。
您知道可能需要更新多少分区吗?