我正在尝试用Java来动态/以编程方式(就是这个词?)构建WindowSpec,以便为分区和order by子句传递参数。我已经部分工作了。我可以为每个子句传递一个简单的逗号分隔的字符串,并构建窗口规范。我唯一不知道的是,如果我不想升序,如何按方向指定顺序。
例如,假设我有一个sortKeys
的简单字符串,如table1.a, table1.b
。我可以这样构建我的表情:
List<String> sorts = Arrays.asList(sortKeys.split(","));
Column[] sortCols = new Column[sorts.size()];
for (int i = 0; i < sorts.size(); i++) {
sortCols[i] = new Column(sorts.get(i).trim() );
}
然后我可以将其传递给我的WindowSpec:
WindowSpec w = org.apache.spark.sql.expressions.Window.partitionBy(partCols).orderBy(sortCols);
一切正常。但是,如何为每列指定顺序的方向呢?