2017-06-12 8 views
1

Dans bigquery Google, juste curieux: existe-t-il un moyen simple de présenter la valeur float comme une chaîne sans perdre la précision de celui-ci.Google Bigquery - Représenter float comme une chaîne sans perdre la précision

Actuellement:

select 
    string(float_value) as str_float_value, 
    cast(float_value as string) as cast_float_value_as_string, 
    float_value as original_float_value 
from (select 33.7474782 as float_value); 

cela vous redonnons:

Row | str_float_value | cast_float_value_as_string | original_float_value 
----+-----------------+----------------------------+--------------------- 
1 | 33.7475   | 33.7475     | 33.7474782 

Y at-il une meilleure façon d'obtenir flotteur sous forme de chaîne sans perdre c'est la précision?

[Contexte: J'ai un cas d'utilisation où il y a 2 tables différentes avec une colonne de chaîne contenant des valeurs fractionnaires et une autre table contenant une colonne flottante régulière, je peux toujours lancer une chaîne pour flotter puis rejoindre fonctionnera. Mais juste curieux de savoir s'il y avait moyen de faire flotter comme une chaîne sans perdre la précision]

+0

Merci pour l'édition rapide Elliott –

Répondre

2

Il semble que le SQL hérité conserve moins de précision lors de la conversion de valeurs à virgule flottante en chaînes. Pouvez-vous utiliser standard SQL à la place? Voici ce que je vois:

$ bq query "SELECT CAST(float_value AS STRING) AS float_string, float_value FROM (SELECT 33.7474782 AS float_value);" 
+--------------+-------------+ 
| float_string | float_value | 
+--------------+-------------+ 
| 33.7475  | 33.7474782 | 
+--------------+-------------+ 

$ bq query --use_legacy_sql=false "SELECT CAST(float_value AS STRING) AS float_string, float_value FROM (SELECT 33.7474782 AS float_value);" 
+--------------+-------------+ 
| float_string | float_value | 
+--------------+-------------+ 
| 33.7474782 | 33.7474782 | 
+--------------+-------------+ 
+0

de Nice, thats intéressant, je ne savais pas sql norme conserver toute précision est. Oui, je peux passer au SQL standard au fur et à mesure des besoins. Merci d'avoir répondu. –