Dataprep导入数据集不会自动检测第一行中的标头

时间:2019-06-20 15:59:14

标签: google-cloud-dataprep

我正在从Google Cloud Storage(参数化)导入数据集到Dataprep。到目前为止,此功能运行良好,我喜欢的功能之一是它可以自动检测到我的(application / octet-stream).csv文件中的第一行是我的标题。

但是,今天我尝试导入一个新的数据集,但它没有检测到标题,但是它自动分配了column1,column2 ...

发生了什么变化,或者为什么会这样。我已选中自动检测框并使用UTF-8:

2 个答案:

答案 0 :(得分:1)

虽然自动检测选项通常非常好,但有时由于多种原因它会失败。当字段名称包含某些字符(例如,逗号,零宽度非联接符,空字节等不可见字符)或在同一文件中使用多种不同样式的换行符时,我特别注意到了这一点。

我看到的另一种情况是,数据列多于标题。

正如您已经打过的一样,您可以使用以下代码片段执行大多数操作:

rename type: header method: filter sanitize: true

。 。 。或执行单独的配方步骤,将第一行转换为标题,然后根据自己的喜好批量重命名。

但是,我经常发现,当对先前工作的文件进行自动检测失败时,这往往表明源文件存在某种问题。我会寻找不匹配的数据,并在输出中放置逗号,并使用明文编辑器将标头和一些数据行与原始源进行比较。

当其他所有方法均失败时,您可以尝试CSV验证程序。 。 。但是以我的经验,在文件格式选项方面,他们往往会令人难以置信-因此,取决于生成CSV的系统,它可能会遗漏任何错误或给出假阳性。我有两次经验,其中在完全干净的文件上自动检测由于没有明显原因而失败,因此有可能由于某种原因而跳过了该过程。

还应注意,如果您具有正确检测到 的结构化文件,但想要还原该文件,则可以转到数据集详细信息,请选择“ ...”(更多)按钮,然后选择“删除结构...”(我希望有一天,当您想向原始数据集中添加结构或解决此类错误时,他们会让您做相反的事情。 !)

祝你好运!

答案 1 :(得分:0)

可以作为Flow中的转换来解析:

rename type: header method: filter sanitize: true