我正在从Google Cloud Storage(参数化)导入数据集到Dataprep。到目前为止,此功能运行良好,我喜欢的功能之一是它可以自动检测到我的(application / octet-stream).csv文件中的第一行是我的标题。
但是,今天我尝试导入一个新的数据集,但它没有检测到标题,但是它自动分配了column1,column2 ...
发生了什么变化,或者为什么会这样。我已选中自动检测框并使用UTF-8:
答案 0 :(得分:1)
虽然自动检测选项通常非常好,但有时由于多种原因它会失败。当字段名称包含某些字符(例如,逗号,零宽度非联接符,空字节等不可见字符)或在同一文件中使用多种不同样式的换行符时,我特别注意到了这一点。
我看到的另一种情况是,数据列多于标题。
正如您已经打过的一样,您可以使用以下代码片段执行大多数操作:
rename type: header method: filter sanitize: true
。 。 。或执行单独的配方步骤,将第一行转换为标题,然后根据自己的喜好批量重命名。
但是,我经常发现,当对先前工作的文件进行自动检测失败时,这往往表明源文件存在某种问题。我会寻找不匹配的数据,并在输出中放置逗号,并使用明文编辑器将标头和一些数据行与原始源进行比较。
当其他所有方法均失败时,您可以尝试CSV验证程序。 。 。但是以我的经验,在文件格式选项方面,他们往往会令人难以置信-因此,取决于生成CSV的系统,它可能会遗漏任何错误或给出假阳性。我有两次经验,其中在完全干净的文件上自动检测由于没有明显原因而失败,因此有可能由于某种原因而跳过了该过程。
还应注意,如果您具有正确检测到 的结构化文件,但想要还原该文件,则可以转到数据集详细信息,请选择“ ...”(更多)按钮,然后选择“删除结构...”(我希望有一天,当您想向原始数据集中添加结构或解决此类错误时,他们会让您做相反的事情。 !)
祝你好运!
答案 1 :(得分:0)
可以作为Flow中的转换来解析:
rename type: header method: filter sanitize: true