python - 由于类型不匹配,无法解析 stack()

我有一个看起来像这样的 pyspark 代码:

from pyspark.sql.functions import expr
unpivotExpr = """stack(14, 'UeEnd', UeEnd, 
    'Encedreco', Endereco,
    'UeSitFun', UeSitFun,
    'SitacaoEscola', SituacaoEscola, 
    'Creche', Creche, 
    'PreEscola', PreEscola, 
    'FundAnosIniciais', FundAnosIniciais, 
    'FundAnosFinais', FundAnosFinais, 
    'EnsinoMedio', EnsinoMedio, 
    'Profissionalizante', Profissionalizante, 
    'EJA', EJA, 
    'EdEspecial', EdEspecial, 
    'Conveniada', Conveniada,
    'TipoAtoCriacao', TipoAtoCriacao)
    as (atributo, valor)"""

unpivotDf = df.select("Id", expr(unpivotExpr))

当我运行它时,我得到这个错误:

cannot resolve 'stack(14, 'UeEnd', `UeEnd`, 'Encedreco', `Endereco`, 'UeSitFun', `UeSitFun`,
'SitacaoEscola', `SituacaoEscola`, 'Creche', `Creche`, 'PreEscola', `PreEscola`,
'FundAnosIniciais', `FundAnosIniciais`, 'FundAnosFinais', `FundAnosFinais`, 'EnsinoMedio',
`EnsinoMedio`, 'Profissionalizante', `Profissionalizante`, 'EJA', `EJA`, 'EdEspecial',
`EdEspecial`, 'Conveniada', `Conveniada`, 'TipoAtoCriacao', `TipoAtoCriacao`)'
due to data type mismatch: Argument 2 (string) != Argument 6 (bigint); line 1 pos 0;

什么可能导致这个问题?

回答1

当您取消透视一组列时,它们的所有 values 都将在同一列中结束。因此,您应该首先确保您尝试取消透视的所有列都具有相同的数据类型。否则,您将在不同的行中拥有具有多种不同类型的列。

相似文章

c - C 中的 Class 模型

我正在尝试在C中创建一个“class模型”,其中我定义了一个表示class的struct并在其中定义了函数指针来表示方法,如下所示://ClassName.htypedefstructstruct_C...

c - C 中使用数组、推送、弹出和显示的堆栈实现

我为使用堆栈的程序创建的2个函数存在问题。但是,我不能确定两个函数是否同时出现错误,因为它们是相互关联的。因此,当将数据添加到堆栈及其后续输出时,我得到的输出并不完全正确。inputthe1thele...

最新文章