2014-01-15 32 views
5

我正試圖計算商店的總銷售額。我在名爲UNIT_PRICE的列中有產品價格。所有的價格都有2位小數,例如:34.54或19.99等,它們在模式中作爲type:float導入。 (UNIT_PRICE:float)Bigquery SUM(Float_Values)返回多個小數位和科學計數法

當我執行選擇查詢:「SELECT CompanyName,SUM(Unit_Price)as sumValue」等我得到以下返回列中,但只有「有時」。

2.697829165015719E7

它應該是這樣的:26978291.65

由於我這個管道伸到電子表格和圖表,然後它我需要它是float類型或至少代表了正常的價格格式。

我曾嘗試以下,但仍然有問題:

  • 來源:試圖在源數據的原始數據類型轉換爲BigDecimal,只有2位小數,然後導出到CSV文件,導入BigQuery,但同結果。
  • Bigquery:嘗試先轉換爲字符串,然後轉換爲浮點數,然後返回SUM,但結果相同。 「選擇公司名稱,SUM(浮點(字符串(UNIT_PRICE)))作爲sumValue」

如何處理這個任何想法?

感謝

回答

8

BigQuery使用默認格式爲浮點數,這意味着根據數字的大小,可能會使用科學記數法。 (請參閱%g格式說明符here

我們嘗試切換此操作,但事實證明,很難獲得讓所有人都快樂的格式。 %f格式化總是會產生十進制格式,但也會將小數點填充到6位數精度,並且將小數點以下的精度降低。

我已經提交了一個在BigQuery中允許任意格式字符串轉換函數的bug。它會讓你運行SELECT FORMAT_STRING("%08d", SUM(Unit_Price)) FROM ...以便能夠控制輸出的確切格式。

+0

僅供參考...今天早上這個變化進行了,所以它會進入下週的發佈。 –

+0

非常感謝Jordan和BigQuery團隊。將對此進行測試並提供反饋。 –

+0

我們恢復了使用%f的更改。我已經更新了我的答案,並提供了更多細節。 –

1

你在瀏覽器BQ工具或只在您的電子表格中看到了嗎? BQ float的大小爲8字節,所以它可以容納數字> 9,000,000,000,000 ...

我發現有時Excel打開一個平面文件(csv)時會將其轉換爲您提到的格式。爲了驗證是這種情況,在嘗試使用excel之前,嘗試用記事本(或其他平面文件編輯器)打開您的csv。

如果確實存在這個問題,您可以配置excel連接器,將該字段視爲字符串而不是數字。其他選項將轉換爲字符串和concat「」爲數字。這樣電子表格會自動將其視爲字符串。之後,您可以將其轉換回電子表格中的數字。 謝謝

+0

它顯示在BQ瀏覽器結果以科學計數法。如果我將結果作爲csv下載並在記事本或Excel中打開,則以科學記數法顯示。意味着我必須做其他格式不理想。 –