[PYTHON] Ich habe mir die Metainformationen von BigQuery angesehen und versucht, sie zu verwenden

Einführung

BigQuery ist sehr praktisch, nicht wahr? Derzeit können Sie Tabellen einfügen, die Put-Tabellen mit hoher Geschwindigkeit aggregieren und sogar maschinelles Lernen mit BigQuery ML usw. kann nur mit BigQuery durchgeführt werden.

Es ist bequem zu verwenden, und wenn ich es bemerke, wurden verschiedene Datensätze und Tabellen erstellt. Es scheint, dass die Metainformationen mithilfe von INFORMATION_SCHEMA angezeigt werden können.

Dieses Mal werden wir organisieren, wie INFORMATION_SCHEMA und andere Metainformationen verwendet werden.

Wie man Metainformationen liest

Rufen Sie eine Liste der Datensätze für ein bestimmtes Projekt ab

Die erste besteht darin, das Projekt anzugeben und die Liste der darin enthaltenen Datensätze abzurufen.


SELECT * FROM `myproject.INFORMATION_SCHEMA.SCHEMATA`

Die folgenden Elemente werden ausgegeben.

--catalog_name: Projektname --schema_name: Datensatzname --schema_owner: Name des Besitzers? (Alle waren Null) --creation_time: Erstellungsdatum und -zeit --last_modified_time: Geändertes Datum und Uhrzeit --location: Speicherort

Schade, dass der Name des Besitzers Null war. Dies wäre sehr einfach zu verwalten, wenn Sie wüssten, wer den Datensatz erstellt hat. .. .. Gibt es eine Möglichkeit, es einzutragen?

Abrufen einer Tabellenliste für ein bestimmtes Projekt / einen bestimmten Datensatz 1

Weiter Projekt: So geben Sie ein Dataset an und erhalten eine Liste der darin enthaltenen Tabellen.

SELECT * FROM `myproject.mydataset.INFORMATION_SCHEMA.TABLES`

Die folgenden Elemente werden ausgegeben.

--table_catalog: Projektname --table_schema: Datensatzname --table_name: Tabellenname --table_type: Tabelle oder VIEW oder XRef-Tabelle --is_insertable_into: Können Sie INSERT? --is_typed: Unbekannt (gibt es etwas anderes als Nein?) --creation_time: Erstellungsdatum und -zeit

Ich verstehe die Bedeutung von is_insertable_into nicht. Es scheint keine anderen Elemente als Ja für die Tabelle und Nein für VIEW zu geben. In diesem Fall reicht table_type aus. .. ..

Abrufen einer Liste von Tabellen für ein bestimmtes Projekt / einen bestimmten Datensatz 2

Ebenso Projekt: So erhalten Sie eine Liste der darin enthaltenen Tabellen, indem Sie ein Dataset angeben. Die ausgegebenen Elemente unterscheiden sich geringfügig

SELECT * FROM `myproject.mydataset.__TABLES__`

--project_id: Projektname --dataset_id: Datasetname --table_id: Tabellenname --creation_time: Erstellungsdatum und -zeit --last_modified_time: Geändertes Datum und Uhrzeit --row_count: Anzahl der Zeilen --size_bytes: Datengröße

Es ist unangenehm, dass der Name je nach den angezeigten Metainformationen leicht unterschiedlich ist. Es kann sich um Katalogname, Tabellenkatalog oder Projekt-ID handeln, um auf denselben Projektnamen zu verweisen. Wird es in BigQuery richtig verwendet?

Abrufen einer Liste von Tabellen für ein bestimmtes Projekt / einen bestimmten Datensatz 3

Weitere Informationen zur Tabelle finden Sie auch in INFORMATION_SCHEMA.

SELECT * FROM `myproject.mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS`

Die folgenden Elemente werden ausgegeben.

--table_catalog: Projektname --table_schema: Datensatzname --table_name: Tabellenname --table_type: Tabelle oder VIEW oder XRef-Tabelle

Es ist schwer zu verstehen, was die Option für einen Moment sagt, aber option_name ist "expiration_timestamp", option_type ist "TIMESTAMP" und option_value ist das Datum und die Uhrzeit, und diese drei sind eine Menge.

Es gab auch Beschreibungen und Etiketten.

Tabellenliste + Spaltenliste eines bestimmten Projektdatensatzes abrufen

Je mehr Tabellen Sie haben, desto mehr Ausgabe haben Sie.

SELECT * FROM `myproject.mydataset.INFORMATION_SCHEMA.COLUMNS`

--table_catalog: Projektname --table_schema: Datensatzname --table_name: Tabellenname --column_name: Spaltenname --ordinal_position: Spaltennummer --is_nullable: Ist Null in Ordnung? --data_type: Datentyp

Diejenigen, die keinen Kommentar haben, sind die Spalten, die nur NIE oder Null enthalten. Ich habe die Bedeutung der Spalten nicht verstanden.

Versuchen Sie es mit einer Kombination von Metainformationen

Ich möchte den Rechnungsbetrag für jeden Datensatz in einem Projekt berechnen, indem ich Metainformationen kombiniere.

import pandas as pd

query="SELECT schema_name FROM `myproject.INFORMATION_SCHEMA.SCHEMATA`"
df = pd.read_gbq(query, project_id='myproject', dialect="standard")

df_output = pd.DataFrame()

query="""
SELECT 
 "{dataset}" AS dataset, 
 SUM(size_bytes) / 1000000000 AS DataSize, 
 0.020 * SUM(size_bytes) / 1000000000 AS Cost 
FROM `myproject.{dataset}.__TABLES__`
GROUP BY dataset"""

for i, dataset in df.iterrows():
  d = pd.read_gbq(query.format(dataset=dataset[0]), project_id='myproject',dialect="standard")
  
  df_output=df_output.append(d)

Die BQ-Speicherkosten betragen 0,02 USD pro GB aus "BigQuery-Gebühren". Für die Langzeitlagerung kostet es 0,01 USD, sodass die tatsächliche Rechnung möglicherweise etwas billiger ist als das Ergebnis.

abschließend

Ich habe die Metainformationen von BigQuery zusammengefasst. Da es verschiedene Metainformationen gibt, scheint es andere zu geben, aber vorerst werde ich diejenigen veröffentlichen, die ich oft benutze. Es gibt jedoch einige mysteriöse Gegenstände, daher muss ich etwas mehr lernen.

Recommended Posts

Ich habe mir die Metainformationen von BigQuery angesehen und versucht, sie zu verwenden
Ich habe versucht, die BigQuery-Speicher-API zu verwenden
Ich habe versucht, PyCaret mit der schnellsten Geschwindigkeit zu verwenden
Ich habe versucht, den Bildfilter von OpenCV zu verwenden
Ich habe versucht, BigQuery ML zu verwenden
Ich habe versucht, die API von Sakenowa Data Project zu verwenden
Ich habe versucht, die Spacha-Informationen von VTuber zu visualisieren
Ich habe versucht, die Standortinformationen des Odakyu-Busses zu erhalten
Ich habe versucht, das CNN-Modell von TensorFlow mit TF-Slim umzugestalten
Ich habe versucht, das Lachproblem mit Keras zu erkennen.
[Python] Ich habe versucht, Daten mit der API von Wikipedia zu sammeln
Ich habe versucht, die checkio-API zu verwenden
Ich habe versucht, den Index der Liste mithilfe der Aufzählungsfunktion abzurufen
Ich habe versucht, eine Site zu erstellen, mit der die aktualisierten Informationen von Azure einfach angezeigt werden können
Ich habe den asynchronen Server von Django 3.0 ausprobiert
Ich habe versucht, das Gesichtsbild mit sparse_image_warp von TensorFlow Addons zu transformieren
Ich habe versucht, die Trefferergebnisse von Hachinai mithilfe der Bildverarbeitung zu erhalten
zoom Ich habe versucht, den Grad der Aufregung der Geschichte auf der Konferenz zu quantifizieren
Ich habe versucht, die Ähnlichkeit der Frageabsicht mit Doc2Vec von gensim abzuschätzen
Ich habe versucht, die Phase der Geschichte mit COTOHA zu extrahieren und zu veranschaulichen
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Ich habe die übliche Geschichte ausprobiert, Deep Learning zu verwenden, um den Nikkei-Durchschnitt vorherzusagen
Mit COTOHA habe ich versucht, den emotionalen Verlauf des Laufens von Meros zu verfolgen.
Ich habe die gängige Geschichte der Vorhersage des Nikkei-Durchschnitts mithilfe von Deep Learning (Backtest) ausprobiert.
Ich habe die Pivot-Table-Funktion von Pandas ausprobiert
Ich habe versucht, die Wetterkarte einer Clusteranalyse zu unterziehen
vprof - Ich habe versucht, den Profiler für Python zu verwenden
Ich habe versucht, das Datetime-Modul von Python zu verwenden
Ich habe versucht, die funktionale Programmierbibliothek toolz zu verwenden
Ich habe versucht, die Texte von Hinatazaka 46 zu vektorisieren!
Ich habe versucht, die Verschlechterung des Lithium-Ionen-Akkus mithilfe des Qore SDK vorherzusagen
Ich habe versucht, das Update von "Hameln" mit "Beautiful Soup" und "IFTTT" zu benachrichtigen.
[Python] Ich habe versucht, das Mitgliederbild der Idolgruppe mithilfe von Keras zu beurteilen
Ich habe versucht, die Daten des Laptops durch Booten unter Ubuntu zu retten
Ich habe die Größenänderung von TensorFlow nicht verstanden und sie daher visuell zusammengefasst.
Ich habe versucht, die Informationen der ASPX-Site, die mit Selenium IDE ausgelagert wird, so programmlos wie möglich abzurufen
Ich habe versucht, parametrisiert zu verwenden
Ich habe versucht, Argparse zu verwenden
Ich habe versucht, Mimesis zu verwenden
Ich habe versucht, anytree zu verwenden
Ich habe versucht, das Update von "Werde ein Romanautor" mit "IFTTT" und "Werde ein Romanautor API" zu benachrichtigen.
Ich habe versucht, die Grundform von GPLVM zusammenzufassen
Ich habe das MNIST-Tutorial von tensorflow für Anfänger ausprobiert.
Ich habe versucht, aiomysql zu verwenden
Ich habe versucht, das Telefon klingeln zu lassen, als es auf dem IoT-Post veröffentlicht wurde
Ich habe versucht, Summpy zu verwenden
Python-Übung 100 Schläge Ich habe versucht, den Entscheidungsbaum von Kapitel 5 mit graphviz zu visualisieren
Ich habe versucht, Coturn zu verwenden
Ich habe versucht, Pipenv zu verwenden
Ich habe versucht, Matplotlib zu verwenden
Ich habe versucht, "Anvil" zu verwenden.
Ich habe versucht, Hubot zu verwenden
Ich habe versucht, ESPCN zu verwenden
Ich habe versucht, openpyxl zu verwenden
Ich habe versucht, den Text in der Bilddatei mit Tesseract der OCR-Engine zu extrahieren
Ich habe versucht, EKG-Daten mit der K-Shape-Methode zu gruppieren
Ich habe versucht, Ipython zu verwenden