Ich versuche, eine SQL -Abfrage zu laden, und versuche, Daten aus einer Snowflake -Datenbank in einen Datenrahmen zu extrahieren (zum Tensor von Torch, aber die Konvertierung findet später statt). Also 385 Millionen x 12 Bytes = 4,6 GB ungefähr. Dies wird in der Snowflake -GUI verifiziert, wo wir sehen, dass die Ergebnisgröße noch kleiner ist (aufgrund der Komprimierung) und die Abfrage, die für "nur" 40 Sekunden lang ausgeführt wird. Es scheint in der Read/Fetch -Anweisung zu passieren. Darüber hinaus dauert es über 40 Minuten, um die Abfrage zu extrahieren, während in der Snowflake GUI -Abfragegeschichte die Abfrage in den "erwarteten" 40 Sekunden abgeschlossen wird. Nachdem es geladen wurde, können wir überprüfen, ob der resultierende Datenrahmen von zu erwartender Größe ist. Wir haben versucht, Malloc zu verwenden, aber es scheint nicht zu finden, woher der Speicheraufwand kommt.
Code: Select all
import pandas as pd
from sqlalchemy import Engine, text
def load_data(date: date, engine: Engine) -> pd.DataFrame:
"""Load all data and case_ids."""
query = text(my query) # dependent on date
with engine.connect() as connection:
df = pd.read_sql_query(query, con=connection)
return df
< /code>
Code Versuch 2: Snowflake Connector < /p>
import pandas as pd
import snowflake
def load_data(date : date) -> pd.DataFrame:
query = my query
with snowflake.connector.connect(**credentials) as conn:
with conn.cursor() as cur:
rows = cur.execute(query).fetchall()
# Convert rows to df
return df