S02052

错误代码

S02052

报错信息

The last column for "pivot by" clause must be a partitioning column. RefId: S02052

错误原因

在查询表是分布式表时,如果在 select 子句中使用 asis 函数,pivot by 字段的最后一列必须是分区列。

def createMyTable(n) {
    intv = take(1..10, n)
    symbol = take(`a`b`c, n)
    id = rand(100, n)
    strv = take("abs" + string(1..10), n)
    doublev = rand(10.0, n)
    return table(intv, strv, doublev, id, symbol)
}

// 建库
dbName = "dfs://test"
if (existsDatabase(dbName)) {
    dropDatabase(dbName)
}
db = database(dbName, HASH, [INT, 2])

// 建表
n = 100
t = createMyTable(n)
pt = createPartitionedTable(db, t, `pt, `intv)
pt.append!(t)

select asis(doublev) from pt pivot by id, symbol; // 报错
select doublev from pt pivot by id, symbol; // 正常

解决办法

需要将 asis 函数删去。