Dataprep 导入数据集未自动检测第一行中的 headers

Dataprep import dataset does not detect headers in first row automatically

我正在将数据集从 Google Cloud Storage(参数化)导入 Dataprep。到目前为止,它工作得非常好,我喜欢的一个功能是它自动检测到我的 (application/octet-stream).csv 文件中的第一行是我的 headers.

然而,今天我尝试导入一个新数据集,它没有检测到 headers,但它自动分配了 column1、column2...

发生了什么变化,或者为什么会这样。我已经选中 auto-detect 框并使用 UTF-8:

可以作为流程中的转换解决:

rename type: header method: filter sanitize: true

虽然 auto-detect 选项通常很不错,但有时它会因多种原因而失败。当字段名称包含某些字符(例如逗号、zero-width-non-joiners、空字节等不可见字符)或在同一文件中使用多种不同样式的换行符时,我特别注意到这一点。

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

如您所见,您可以使用以下代码片段来完成几乎相同的事情:

rename type: header method: filter sanitize: true

。 . .或者进行单独的配方步骤,将第一行转换为 header,然后根据自己的喜好将 bulk-rename 转换为 bulk-rename。

然而,我经常发现,当 auto-detect 在以前工作的文件上失败时,它往往是源文件存在某种问题的迹象。我会查找不匹配的数据,以及输出中放错位置的逗号,以及使用纯文本编辑器将 header 和一些数据行与原始来源进行比较。

当所有其他方法都失败时,您可以尝试 CSV 验证器。 . .但根据我的经验,当涉及到文件的格式选项时,他们往往非常固执己见——因此根据生成 CSV 的系统,它可能会遗漏任何错误或给出 false-positives。我有过两次 auto-detect 在完全干净的文件上无缘无故失败的经历,因此可能由于某种原因刚刚跳过了该过程。

还应注意,如果您有一个 正确检测到但想要恢复的结构化文件,您可以去到数据集详细信息,select“...”(更多)按钮,然后选择 "Remove structure..."(我希望有一天当你想添加结构时他们会让你做相反的事情到原始数据集或解决这样的错误!)

祝你好运!