U-SQL Python 扩展 DataFrame 列格式

U-SQL Python extension DataFrame Column Format

我正在尝试使用 Python 对 运行 一些代码的扩展,但是当我尝试引用 pandas 数据框中的列时,它说找不到该列:

if "hist_future_flag" not in [x.lower() for x in dfBLData.columns.values.tolist()]:
            ProcessSuccessFlag = False
            print('dfBLData (Input DataFrame) requires "hist_future_flag" column. Cols in dfBLData are: ')
            print(', '.join(dfBLData.columns.values.tolist()))

dfBLData (Input DataFrame) requires ""hist_future_flag"" column. Cols in dfBLData are: b'geography', b'mitm_key', b'target', b'dow', b'time_key', b'hist_future_flag' ... [and so on]

所以看起来它们是以字节形式传入的,但是当我尝试转换 headers 时,python 说它们是字符串,无法解码!

这是相关的 U-SQL 我是 运行ning:

@d = 
SELECT [geography], [mitm_key], [target], [dow], [time_key],[hist_future_flag]
FROM modeling.dbo.LandingZone
WHERE geography == 5;

@bl =
REDUCE @d
ON geography, mitm_key
PRODUCE 
time_key DateTime,
predict float,
hist_future_flag int
USING new Extension.Python.Reducer(pyScript:@myScript);

OUTPUT @bl
TO "/test_reducer.csv"
USING Outputters.Csv(outputHeader: true);

事实证明,当使用 "VALUES" 选择方法以外的任何方法时,列名称表示为 "b'columnname'"。它基本上是列名称作为字节的字符串化表示。

谢谢。我将此线程转发给产品团队,看看它是否已经修复,如果没有,他们将添加修复。

我们在 2017 年 4 月 13 日部署了新位,我们进行了更改以不将字符串转换为字节。请重新安装扩展并重试。