web-dev-qa-db-fra.com

Sélectionner toutes les colonnes sauf certaines dans Google BigQuery?

Existe-t-il un moyen de sélectionner * sauf [noms de colonne x, y, z] dans BigQuery? Je vois quelques solutions pour MySQL mais je ne sais pas si cela s'applique à BQ.

Je vous remercie.

22
wubr2000

Rien dans le dialecte SQL BigQuery actuel ne le permet. Mais comme il s'agit d'une demande récurrente, nous avons ajouté un élément de travail pour prendre en charge

SELECT * EXCEPT (a, b, c) FROM ...

Mise à jour: Cette fonctionnalité est désormais disponible dans BigQuery standard SQL. Détails sur https://cloud.google.com/bigquery/sql-reference/enabling-standard-sql Exemple utilisant un tableau wikipedia public - sélectionnez toutes les colonnes sauf le titre et le commentaire:

select * except(title, comment) from publicdata.samples.wikipedia limit 10
55
Mosha Pasumansky

En plus de la syntaxe SELECT * EXCEPT() , il existe une syntaxe SELECT * REPLACE() - toutes deux prises en charge avec SQL standard introduit
L'utilisation est simple et évidente selon la documentation

Ce qui est moins évident, c'est que vous pouvez utiliser les deux ensemble dans le même SELECT, comme dans l'exemple ci-dessous

WITH orders AS
  (SELECT 5 as order_id,
  "sprocket" as item_name,
  200 as quantity)
SELECT * EXCEPT (order_id) REPLACE ("widget" AS item_name), "more" as more_fields
FROM orders;
4
Mikhail Berlyant