Hallo zusammen,
leider bin ich gezwungen einen Code den ich in SQL geschrieben hatte in R zu übernehmen, falls dies möglich ist. In R habe ich leider wenig Erfahrungen und weiß nicht sicher ob der Code ähnlich simple funktioniert
Den entsprechenden SQL Code findet ihr im Anhang. Anhand dieses Codes konnte ich über die Zeit hinweg(Reporting_dt) Deltas für die Var ECL_AMT bestimmen. Je nachdem konnte ich dies für 1 Periode machen oder in der 12 MOnate SIcht. Falls es keine Variable im letzten Monat gab wurde dafür eine Null gesetzt. Unterteilt war dies in Business_partner_id und reporting_dt.
Ich bin leider relativ ratlos und hoffe das es vielleicht hier jemanden gibt der sowohl mit R als auch SQL Erfahrung hat und mir hierbei weiterhelfen kann.
Vielen Dank im Voraus!
SQL in R transformierbar
Re: SQL in R transformierbar
Hallo hummeale,
willkommen im Forum!
Es gibt verschiedene gangbare Wege:
1. Die Datenbankabfrage aus R heraus erledigen. Dafür gibt es für R entsprechende bindings - mehr oder weniger speziell für die jeweilige SQL-Datenbank.
2. Das Paket sqldf stellt SQL für die Arbeit mit Dataframes zur Verfügung.
3. Das Paket data.table stellt eine Syntax für den Umgang mit den Datenobjekten zur Verfügung, die strukturell ähnlich zu SQL ist.
Was für eine Datenbank liegt bei Dir vor?
Mit welchen Datenmengen soll jongliert werden?
Gruß, Jörg
willkommen im Forum!
Es gibt verschiedene gangbare Wege:
1. Die Datenbankabfrage aus R heraus erledigen. Dafür gibt es für R entsprechende bindings - mehr oder weniger speziell für die jeweilige SQL-Datenbank.
2. Das Paket sqldf stellt SQL für die Arbeit mit Dataframes zur Verfügung.
3. Das Paket data.table stellt eine Syntax für den Umgang mit den Datenobjekten zur Verfügung, die strukturell ähnlich zu SQL ist.
Was für eine Datenbank liegt bei Dir vor?
Mit welchen Datenmengen soll jongliert werden?
Gruß, Jörg
Re: SQL in R transformierbar
Ich würde aus performanzgründen immer soviel wie möglich auf der Datenbank rechnen.
Geht auch wunderbar entweder mit SQL direkt oder auch in R Syntax die zu SQL umgeschrieben wird.
Hier ein Beispiel von jogos vorschlägen (+dplyr Beispiel) welche eine in-memory SQLite nutzt...
Oder willst du nur die Logik der Abfrage nach R portieren? Dann solltest du uns aber ein reproduzierbares Beispiel lieferen!
Geht auch wunderbar entweder mit SQL direkt oder auch in R Syntax die zu SQL umgeschrieben wird.
Hier ein Beispiel von jogos vorschlägen (+dplyr Beispiel) welche eine in-memory SQLite nutzt...
Code: Alles auswählen
library(dplyr)
library(DBI)
# spin up a SQLite in memory
con <- DBI::dbConnect(RSQLite::SQLite(), dbname = ":memory:")
# add some example data
copy_to(con,
iris,
"iris",
temporary = FALSE,
indexes = list(
"Species"
)
)
# 1 Query SQL directly. Send Query directly to DB
dbGetQuery(con, 'SELECT AVG("Sepal.Length") as mean_sepal_length FROM iris GROUP BY Species')
# 2 create SQL in R/dplyr Syntax, then send to DB
tbl(con, "iris") %>%
group_by(Species) %>%
summarise(mean_sepal_length = mean(Sepal.Length, na.rm = TRUE))
# here is the created query
tbl(con, "iris") %>%
group_by(Species) %>%
summarise(mean_sepal_length = mean(Sepal.Length, na.rm = TRUE)) %>%
show_query()
# 3 Fetch all data and compute in R (less performant for bigger data)
df <- dbGetQuery(con, "SELECT * FROM iris")
df %>%
group_by(Species) %>%
summarise(mean_sepal_length = mean(Sepal.Length, na.rm = TRUE))
# or
tapply(df$Sepal.Length, df$Species, mean)
# or many others
# 4 Fetch all data and compute in R using SQL Syntax (less performant for bigger data)
require(sqldf)
mydata <- iris
sqldf('SELECT AVG("Sepal.Length") as mean_sepal_length FROM mydata GROUP BY Species')
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: SQL in R transformierbar
Danke für deine Antwort. Ja ich würde auch gerne so viel wie möglich über SQL machen. Ist es denn möglich meine Abfrageergebnisse aus SQL einfach in R zu exportieren ? Das wäre mir am allerliebsten.
Ansonsten werd ich mal deinen Ansatz ausprobieren.
Besten Dank nochmal!
Ansonsten werd ich mal deinen Ansatz ausprobieren.
Besten Dank nochmal!
Re: SQL in R transformierbar
Wenn Du so ein binding an eine Datenbank verwendest, liefern die SQL-Queries ein Dataframe-Objekt in R.
Kannst Du mir trotzdem meine Fragen beantworten?
Was für eine Datenbank liegt bei Dir vor?
Mit welchen Datenmengen soll jongliert werden?
Gruß, Jörg
Re: SQL in R transformierbar
Kann, siehe mein dbGetQuery Beispiel. R kann mit fast alles Datenbanken umgehen, sofern man die Treiber ordentlich installiert hat...Ist es denn möglich meine Abfrageergebnisse aus SQL einfach in R zu exportieren ?
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
-
- Beiträge: 253
- Registriert: Di Jun 27, 2017 12:09 pm
Re: SQL in R transformierbar
Gude!
Vielleicht off-topic, wenn ja würde ich einen neuen Thread eröffnen:
Kennst du eine Möglichkeit, über Ubuntu auf .acccdb (MS Access) zuzugreifen? Ich nutzte in der MS-Welt odbc, kenne aber keinen ODBC-Treiber für ubuntu (bin aber auch kein ITler).
Dank&Gruß
schubbiaschwilli
Vielleicht off-topic, wenn ja würde ich einen neuen Thread eröffnen:
Kennst du eine Möglichkeit, über Ubuntu auf .acccdb (MS Access) zuzugreifen? Ich nutzte in der MS-Welt odbc, kenne aber keinen ODBC-Treiber für ubuntu (bin aber auch kein ITler).
Dank&Gruß
schubbiaschwilli