Ich habe versucht, Python-ähnliche Schleifen mit BigQuery Scripting zu verarbeiten

Einführung

BigQuery Scripting wurde am 3. Oktober letzten Jahres (2019) in der Beta veröffentlicht. Wenn Sie es gut verwenden, können Sie es durch Python-Verarbeitung ersetzen, oder? Ich war begeistert, aber ich (+ Team), der nicht so gut programmieren kann, weiß nicht, wie man es benutzt.

Sie verwenden tatsächlich "[BigQuery Scripting wurde in der Beta-Version veröffentlicht, gehen wir also leicht durch](https://medium.com/google-cloud-jp/bigquery-scripting%E3%81%8Cbeta%E3%83" % AA% E3% 83% AA% E3% 83% BC% E3% 82% B9% E3% 81% 95% E3% 82% 8C% E3% 81% 9F% E3% 81% AE% E3% 81% A7 % E8% BB% BD% E3% 81% 8F% E3% 82% A6% E3% 82% A9% E3% 83% BC% E3% 82% AF% E3% 82% B9% E3% 83% AB% E3 % 83% BC% E3% 81% 97% E3% 81% A6% E3% 81% BF% E3% 82% 8B-1408bab2c026) ", aber es ist schwierig zu verwenden.

Nach ein paar Monaten solchen Schmerzes habe ich endlich einen Python-ähnlichen Loop-Prozess bekommen, also werde ich ihn teilen.

Was ist BigQuery Scripting?

Wie Sie wissen, kann BigQuery die SQL-Verarbeitung ausführen, aber es gibt Zeiten, in denen Sie die von einer externen Variablen auszuführende SQL-Bedingung bedingt verzweigen oder schleifen möchten. Normalerweise wird es in einer anderen Sprache wie Python aufgerufen, um den SQL-Prozess zu verzweigen und zu wiederholen, aber Scripting soll ihn in diesem Umfang in BigQuery integrieren. (Vielleicht)

Die verständlichste Verarbeitung, die verwendet werden kann, ist die Referenz "Standard-SQL-Skript". Die folgende Verarbeitung ist jedoch möglich. Es gibt. (Repräsentatives Beispiel)

--DECLARE: Deklaration von Variablen --SET: Wertzuweisung zur Variablen --IF ~ ELSE ~ END IF: Bedingter Zweig --LOOP / WHILE: Schleifenverarbeitung

Was du machen willst

Wenn Sie beispielsweise SQL für jedes Geschäft aktivieren und den Gesamtumsatz in separaten Tabellen ausgeben möchten, können Sie BigQuery von Python aus wie folgt aufrufen.

for store in stores:
  query=f"""
  SELECT
   store, SUM(Kaufpreis)AS Gesamtbetrag
   FROM `myproject.mydataset.transaction_*`
   WHERE store = {store_cd}
   GROUP BY store
  """

BigQuery Scripting verfügt auch über eine Loop-Verarbeitung, sodass dies problemlos möglich ist. Ich dachte. "[BigQuery Scripting wurde in der Beta veröffentlicht, gehen wir also leicht durch](https://medium.com/google-cloud-jp/bigquery-scripting%E3%81%8Cbeta%E3%83%AA%" E3% 83% AA% E3% 83% v. BB% BD% E3% 81% 8F% E3% 82% A6% E3% 82% A9% E3% 83% BC% E3% 82% AF% E3% 82% B9% E3% 83% AB% E3% 83% BC% E3% 81% 97% E3% 81% A6% E3% 81% BF% E3% 82% 8B-1408bab2c026) " Sie können die Array-Iterationen, die Sie in einer Python-Schleife ausführen würden, nicht ausführen.

Ich wollte es irgendwie machen.

Was ich getan habe

Der nächste Prozess wurde schließlich durch verschiedene Versuche und Versuche durchgeführt, um zu sehen, ob etwas getan werden konnte.

#Deklaration von Variablen
DECLARE stores ARRAY<STRING>; #Erstellen Sie ein Array namens store und führen Sie die Schleife aus
DECLARE x INT64 DEFAULT 1; #In Geschäften verwendete Argumente (Standardwert = 1)

#Zuordnung zu einer Variablen
#Ich wollte automatisch den ARRAY-Wert (Store-Liste) erstellen, also ARRAY_Erstellt mit AGG

SET stores = (
SELECT ARRAY_AGG(store_cd) as list
FROM (SELECT store_cd FROM `myproject.mydataset.mytable` GROUP BY store_cd ORDER BY store_cd)
);

#Schleifenverarbeitung
#Wiederholen Sie dies bis zur Länge der Geschäfte

WHILE x <= array_length(stores) DO
  SELECT store_cd, SUM(Kaufpreis)AS Gesamtbetrag
  FROM `myproject.mydataset.mytable`
  WHERE store_cd=stores [ORDINAL(x)] #Holen Sie sich den X. Wert der Geschäfte
  GROUP BY store_cd;

  SET x = x + 1;
END WHILE;

Jep. Irgendwie konnte ich eine Schleifenverarbeitung durchführen, die in der alten JAVA verwendet zu werden scheint.

abschließend

Die Schleifenverarbeitung war vorerst nur während BigQuery möglich. Erstens habe ich geschrieben, ohne ARRAY so oft zu verwenden, daher war es ein Schmerz, diesen Prozess zu verwenden. (Wenn du kannst, scheint es einfach zu sein)

In Zukunft möchte ich mich der Herausforderung der bedingten Verzweigung stellen (IF-Anweisung).

Recommended Posts

Ich habe versucht, Python-ähnliche Schleifen mit BigQuery Scripting zu verarbeiten
Ich habe versucht, natürliche Sprache mit Transformatoren zu verarbeiten.
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
Ich habe versucht, mit Elasticsearch Ranking zu lernen!
Ich habe versucht, BigQuery ML zu verwenden
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020
Ich habe gRPC mit Python ausprobiert
Ich habe versucht, mit Python zu kratzen
Ich habe versucht, Sätze mit summpy zusammenzufassen
Ich habe maschinelles Lernen mit liblinear versucht
Ich habe versucht, Essen mit SinGAN zu bewegen
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020: Kapitel 3
Ich habe versucht, DeepPose mit PyTorch zu implementieren
Ich habe versucht, das Gesicht mit MTCNN zu erkennen
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020: Kapitel 1
Ich habe versucht, Prolog mit Python 3.8.2 auszuführen.
Ich habe die SMTP-Kommunikation mit Python versucht
Ich habe versucht, Sätze mit GPT-2 zu generieren
Ich habe versucht, LightGBM mit Yellowbrick zu lernen
Ich habe versucht, das Gesicht mit OpenCV zu erkennen
Ich habe versucht, 100 Sprachverarbeitung zu klopfen 2020: Kapitel 2
Ich habe versucht, 100 Sprachverarbeitung zu klopfen 2020: Kapitel 4
Ich habe versucht, asynchrone Verarbeitung mit Asyncio
Ich habe versucht, natürliche Zahlenausdrücke und arithmetische Verarbeitung nur mit Listenverarbeitung
Ich habe eine multiple Regressionsanalyse mit Polypoly-Regression versucht
Ich habe versucht, eine SMS mit Twilio zu senden
Ich habe versucht, Amazon SQS mit Django-Sellerie zu verwenden
Ich habe versucht, Autoencoder mit TensorFlow zu implementieren
Ich habe Linebot mit Flasche (Anaconda) + Heroku ausprobiert
Ich habe versucht, AutoEncoder mit TensorFlow zu visualisieren
Ich habe versucht, mit Hy anzufangen
Ich habe versucht, Selen mit Headless-Chrom zu verwenden
Ich habe versucht, Faktoren mit Titanic-Daten zu analysieren!
Ich habe versucht, mit Kaggles Titanic (kaggle②) zu lernen.
Ich habe versucht, mit Python + opencv nicht realistisch zu rendern
Ich habe eine funktionale Sprache mit Python ausprobiert
Ich habe versucht, mit Python ② (Fibonacci-Zahlenfolge) aufzuklären.
Ich habe versucht, DeepPose mit PyTorch PartⅡ zu implementieren
Ich habe versucht, mit Django eine CSV-Upload-, Datenverarbeitungs- und Download-Funktion zu erstellen
Ich habe versucht, CVAE mit PyTorch zu implementieren
Ich habe versucht, mit Pillow mit dem Bild zu spielen
Ich habe versucht, TSP mit QAOA zu lösen
Ich habe mit Jupyter eine einfache Bilderkennung versucht
Ich habe versucht, CNN mit Resnet fein abzustimmen
Ich habe versucht, die BigQuery-Speicher-API zu verwenden
# Ich habe so etwas wie Vlookup mit Python # 2 ausprobiert
Ich habe versucht, mit der Bibliothek GiNZA zur Verarbeitung natürlicher Sprache eindeutige Ausdrücke zu extrahieren
Ich habe versucht, Runenfiguren mit Scikit-Learn handschriftlich zu erkennen
Ich habe versucht, nächstes Jahr mit AI vorherzusagen
Ich habe versucht, das Bild mit Python + OpenCV zu "glätten"
Ich habe Hunderte Millionen SQLite mit Python ausprobiert
Ich habe versucht, das Lesen von Dataset mit PyTorch zu implementieren
Ich habe versucht, lightGBM, xg Boost mit Boruta zu verwenden
Ich habe versucht, Bilder mit CIFAR-10 mit Keras-Learning- zu erkennen.