6 votes

Bigquery Si le champ existe

Courte : Existe-t-il un moyen d'interroger des champs BQ qui n'existent pas, en recevant des nuls pour ces champs ?

J'ai presque le même problème que BigQuery IF field exists THEN mais dans le mien, il arrive que mes API interrogent des tables où il n'y a pas certains champs particuliers (tables historiques) et cette approche échoue car elle a besoin d'une table avec ce champ :

SELECT a, b, c, COALESCE(my_field, 0) as my_field
FROM
(SELECT * FROM <somewhere w/o my_field>),
(SELECT * FROM <somewhere with my_field>)

Y a-t-il un moyen de faire quelque chose comme :

SELECT IFEXISTS(a, NULL) as the-field
FROM <somewhere w/o my_field>

7voto

Mikhail Berlyant Points 50218

Supposons que votre tableau ne comporte que des champs x et y !
La requête ci-dessous fonctionnera donc parfaitement

SELECT x, y FROM YourTable

Mais celui du dessous échouera à cause de l'inexistence du champ z

SELECT x, y, z FROM YourTable

La manière d'aborder ce problème est la suivante

SELECT x, y, COALESCE(z, 0) as z
FROM 
(SELECT * FROM YourTable),
(SELECT true AS fake, NULL as z)
WHERE fake IS NULL

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X