是否可以将行集变量转换为标量值,例如。
class Petition(models.Model):
# Added on creation
target = models.CharField(max_length=50, null=True)
title = models.CharField(max_length=300)
body = models.TextField()
goal = models.IntegerField()
# Added after form creation
letter = models.TextField(null=True)
published = models.BooleanField(default=False)
featured_image = models.CharField(max_length=250, null=True)
end_date = models.DateTimeField(null=True)
# Not User Submitted
is_victory = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now=False, auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True, auto_now_add=False)
def __unicode__(self):
return self.title
def get_absolute_url(self):
return reverse("petitions:detail", kwargs={"id": self.id})
答案 0 :(得分:3)
在U-SQL中尚未将单单元行集隐式转换为标量值。
您对使用该值感兴趣的是什么?
大多数情况下,您可以以不需要标量变量的方式编写U-SQL表达式。例如,如果要在另一个查询的条件中使用该值,则可以在与另一个查询的连接中使用单值rowset(并且使用正确的统计信息,我很确定优化器会将其转换为广播加入)。
如果您觉得无法轻松地将没有行集的表达式写入标量,请通过提供您的方案通过http://aka.ms/adlfeedback告诉我们。
答案 1 :(得分:1)
感谢您提供意见,以下是业务案例 -
我们有源自我们需要生成唯一ID的源的目录数据。使用ROW_NUMBER() OVER() AS Id
方法,我们可以生成唯一ID。但是在合并新记录时,它也会改变现有记录的ID并导致关系数据出现问题
以下是简单的解决方案
//get max id from existing catalog
@maxId =
SELECT (int)MAX(Id) AS lastId
FROM @ExistingCat;
//because @maxId is not scalar, we will do CROSS JOIN so that maxId is repeated for every record.
//ROW_NUMBER() always starts from 1, we can generate next Id with maxId+ROW_NUMBER()
@newRecordsWithId =
SELECT (int)lastId + (int)ROW_NUMBER() OVER() AS Id,
CatalogItemName
FROM @newRecords CROSS JOIN @maxId;