Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform Dataprep中csv文件中的数值不匹配_Google Cloud Platform_Google Cloud Dataprep - Fatal编程技术网

Google cloud platform Dataprep中csv文件中的数值不匹配

Google cloud platform Dataprep中csv文件中的数值不匹配,google-cloud-platform,google-cloud-dataprep,Google Cloud Platform,Google Cloud Dataprep,我很难理解为什么Dataprep将不匹配的值分配给我试图从.csv文件导入的数值 在我的excel中,一切看起来都很正常: 但在dataprep中,这是我得到的价值: 大多数数字似乎都在1000以上 我怎样才能防止这种情况?我将文件保存为.csv格式,这很可能是由于Excel中的原始格式(特别是会计和“逗号样式”数字格式,因为它将货币符号或符号作为格式的一部分进行调整)。在这些情况下,您还会注意到,从Excel粘贴包含前导和尾随空格字符 在这种情况下,Dataprep不会花费太多时间为您思考

我很难理解为什么Dataprep将不匹配的值分配给我试图从.csv文件导入的数值

在我的excel中,一切看起来都很正常:

但在dataprep中,这是我得到的价值:

大多数数字似乎都在1000以上


我怎样才能防止这种情况?我将文件保存为.csv格式,这很可能是由于Excel中的原始格式(特别是会计和“逗号样式”数字格式,因为它将货币符号或符号作为格式的一部分进行调整)。在这些情况下,您还会注意到,从Excel粘贴包含前导和尾随空格字符

在这种情况下,Dataprep不会花费太多时间为您思考,他们从保守的角度为您提供原始数据,并让您决定是否需要重新格式化

要确认Dataprep没有异常行为,只需在文本编辑器中打开CSV,您很可能会看到这些带引号的字符串。当其他系统生成应用了数字格式的CSV时(强制将值在CSV中引用为字符串),这种情况也很常见。类似地,任何包含逗号的文本列通常都会被引用(根据需要,因为这通常是分隔符,具有特殊含义)

谢天谢地,这是一个容易解决的问题。如果希望它是十进制类型,还必须替换逗号


简单替换: 界面:

textformat col: col1 type: trimquotes
textformat col: col1 type: trimwhitespace
replacepatterns col: col1 with: '' on: ',' global: true
  • 格式>修剪前导和尾随引号
  • 格式>修剪前导和尾随空格
  • 替换>文本或图案(替换“,”,确保选中“匹配所有引用”框
  • 结果争吵脚本:

    textformat col: col1 type: trimquotes
    textformat col: col1 type: trimwhitespace
    replacepatterns col: col1 with: '' on: ',' global: true
    

    正则表达式(一步替换):

    在一个由不懂正则表达式的人组成的混合团队中,前者有时更清晰,也不那么可怕,但在其他情况下,一步就可以轻松完成。

    是的,这是有道理的。在dataprep中,作为一项新规则,您在哪里替换它?当我打开.csv文件时,我注意到我没有“,”而只有白色有时空格。@JohnAndrews是的,你可以将这些作为新的步骤放在你的食谱中。一个方便的数据准备技巧是,你可以点击“新步骤”按钮,然后粘贴wranglescript(一次一行),它会为你做所有相同的选择。这也可以从菜单上的界面上进行,对于任何步骤,你都可以单击“复制到剪贴板”"然后也这样做,如果你需要重复使用或更改步骤顺序,这会节省大量时间。在这种情况下,你只需更改列名,然后就可以开始了。如果这一切都对你有效,请确保将答案标记为已接受。你建议在配方开始时进行此过滤吗?@JohnAndrews I尽早完成,这样我就不必在以后的步骤中对此进行解释。但除非您处理的是非常大的数据集,否则这不太可能对性能产生太大的影响。一般来说,我尝试使用以下顺序来实现性能和可重用性(特别是因为我们的团队经常复制旧的配方作为起点):1.删除不需要的列2.根据需要联接/联合3.过滤掉不需要的行4.重命名列5.修剪引号/空格并将缺少的替换为NULL(您可以在
    *
    上替换以一次完成所有列)6.其他数据争用7.修复不正确的类型