Bigquery SUM(Float_Values)返回多个小数位和科学记数法

时间:2014-01-15 15:59:11

标签: google-bigquery

我正在尝试计算商店的总销售额。我在名为UNIT_PRICE的列中有产品价格。所有价格都有2位小数的例子:34.54或19.99等,它们在模式中以类型:float的形式导入。 (UNIT_PRICE:浮点)

当我执行select Query时:“SELECT CompanyName,SUM(Unit_Price)as sumValue”etc我在列中返回以下内容,但只是“有时”。

2.697829165015719E7

应该是这样的:26978291.65

当我将它输出到电子表格然后绘制图表时,我需要它在float类型中或者至少代表一种正常的价格格式。

我尝试过以下但仍有问题:

  • 来源:尝试将原始数据类型转换为BigDecimal,源数据中只有2个小数点,然后导出到csv以导入bigquery但结果相同。
  • Bigquery:尝试首先转换为字符串,然后转换为浮点数然后是SUM,但结果相同。 “SELECT CompanyName,SUM(Float(String(Unit_Price)))作为sumValue”

有关如何处理此事的任何想法?

由于

2 个答案:

答案 0 :(得分:8)

BigQuery对浮点数使用默认格式,这意味着根据数字的大小,可以使用科学记数法。 (请参阅%g格式说明符here

我们尝试转换它,但事实证明,很难得到让每个人都开心的格式。 %f格式化始终生成十进制格式,但也将小数点填充为6位精度,并删除超过一定精度的小数。

我已经提交了一个错误,允许在BigQuery中使用任意格式的字符串转换函数。它可以让你运行SELECT FORMAT_STRING("%08d", SUM(Unit_Price)) FROM ...,以便能够控制输出的确切格式。

答案 1 :(得分:1)

您是在BQ浏览器工具中还是仅在电子表格中看到此内容? BQ float的大小为8个字节,因此它可以保存数字> 9,000,000,000,000 ...

我发现有时当Excel打开平面文件(csv)时,它会将其转换为您提到的格式。要验证是这种情况,请在尝试使用excel之前尝试使用记事本(或其他平面文件编辑器)打开csv。

如果这确实是问题,您可以配置excel连接器将此字段视为字符串而不是数字。其他选项是将其转换为字符串并将“”​​连接到数字。这样,电子表格会自动将其视为字符串。之后,您可以将其转换回电子表格中的数字。 感谢