GBQ 中 window 函数的排序行为规范
Sorting behavior specification in order by for window function in GBQ
我是 运行 GBQ 中使用 window 函数的查询。但我不完全知道如何指定排序行为。按列排序我有两列我想按降序对行进行排序。为此,我在 order by 子句的末尾使用了 DESC,但我得到的是它首先按第一列的升序对行进行排序,然后按第二列的降序排列。我的问题是我是否应该为每一列指定排序顺序?
这里是 returns 错误顺序的查询:
SELECT partitionDate,
createdUTC,
ROW_NUMBER() OVER(PARTITION BY externalid ORDER BY partitionDate, createdUTC DESC NULLS LAST)
其他查询:
SELECT partitionDate,
createdUTC,
ROW_NUMBER() OVER(PARTITION BY externalid ORDER BY partitionDate DESC, createdUTC DESC NULLS LAST)
排序顺序应按列指定,默认为ASC,因此可以省略。所以,是的 - 您应该为每一列使用 DESC,如下所示
SELECT partitionDate,
createdUTC,
ROW_NUMBER() OVER(PARTITION BY externalid ORDER BY partitionDate DESC, createdUTC DESC NULLS LAST)
我是 运行 GBQ 中使用 window 函数的查询。但我不完全知道如何指定排序行为。按列排序我有两列我想按降序对行进行排序。为此,我在 order by 子句的末尾使用了 DESC,但我得到的是它首先按第一列的升序对行进行排序,然后按第二列的降序排列。我的问题是我是否应该为每一列指定排序顺序?
这里是 returns 错误顺序的查询:
SELECT partitionDate,
createdUTC,
ROW_NUMBER() OVER(PARTITION BY externalid ORDER BY partitionDate, createdUTC DESC NULLS LAST)
其他查询:
SELECT partitionDate,
createdUTC,
ROW_NUMBER() OVER(PARTITION BY externalid ORDER BY partitionDate DESC, createdUTC DESC NULLS LAST)
排序顺序应按列指定,默认为ASC,因此可以省略。所以,是的 - 您应该为每一列使用 DESC,如下所示
SELECT partitionDate,
createdUTC,
ROW_NUMBER() OVER(PARTITION BY externalid ORDER BY partitionDate DESC, createdUTC DESC NULLS LAST)