dbplyr: dplyr सिंटैक्स के माध्यम से SQL
ऐसा dplyr कोड लिखें जो SQL में अनुवादित होकर डेटाबेस पर चले।
dbplyr: dplyr सिंटैक्स के माध्यम से SQL, CoddyKit पर R Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह R Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
dbplyr क्या है
dbplyr एक R पैकेज है, जो dplyr क्रियाओं को अपने-आप SQL में अनुवाद करता है। कच्चा SQL लिखने के बजाय, आप परिचित dplyr कोड लिखते हैं और dbplyr उसे आपके डेटाबेस बैकएंड के सही SQL रूप में बदल देता है। क्वेरी डेटाबेस के अंदर चलती है — R की मेमोरी में नहीं।
# install.packages(c('dbplyr', 'DBI', 'RSQLite'))
library(DBI)
library(dbplyr)
library(dplyr)
# dbplyr sits between dplyr and your database:
# Your dplyr code -> dbplyr -> SQL -> Database -> result
# Supported backends: PostgreSQL, MySQL, SQLite,
# SQL Server, BigQuery, Snowflake, ...
cat('dbplyr translates dplyr to SQL')डेटाबेस से कनेक्ट करना
dbplyr, DBI कनेक्शन के ऊपर काम करता है। उपयुक्त ड्राइवर पैकेज का उपयोग करके DBI::dbConnect() से कनेक्शन स्थापित करें, फिर उस कनेक्शन ऑब्जेक्ट को dbplyr फ़ंक्शन में पास करें।
library(DBI)
library(dplyr)
library(dbplyr)
# SQLite example (no server needed — great for demos)
con <- dbConnect(RSQLite::SQLite(), ':memory:')
# Write a test table to the in-memory database
copy_to(con, nycflights13::flights, 'flights',
temporary = FALSE, overwrite = TRUE)
# PostgreSQL example (real server):
# con <- dbConnect(
# RPostgres::Postgres(),
# host = 'db.example.com',
# dbname = 'analytics',
# user = Sys.getenv('DB_USER'),
# password = Sys.getenv('DB_PASS')
# )
cat('Connected to database')tbl() — डेटाबेस तालिका का संदर्भ लेना
tbl(con, 'table_name') डेटाबेस तालिका का एक आलसी संदर्भ बनाता है। अभी कोई डेटा प्राप्त नहीं किया जाता — आपको केवल एक पॉइंटर मिलता है। इसके बाद आप उस पर dplyr क्रियाओं को क्रम से लगा सकते हैं और dbplyr धीरे-धीरे SQL क्वेरी तैयार करेगा।
library(DBI)
library(dplyr)
library(dbplyr)
con <- dbConnect(RSQLite::SQLite(), ':memory:')
mtcars_df <- mtcars
dbWriteTable(con, 'cars', mtcars_df)
# Create a lazy table reference
cars_tbl <- tbl(con, 'cars')
# Printing shows top rows and indicates it is a database source
print(cars_tbl)
# Source: table<cars> [?? x 11]
# Database: sqlite 3.x [:memory:]
cat('tbl() = lazy reference, no data fetched yet')डेटाबेस तालिका पर filter() लागू करना
आप tbl() संदर्भ पर filter() को उसी तरह क्रम से लगा सकते हैं, जैसे स्थानीय डेटा फ़्रेम पर लगाते हैं। dbplyr इसका SQL WHERE क्लॉज़ में अनुवाद करता है। फ़िल्टरिंग डेटाबेस में होती है — केवल मेल खाने वाली पंक्तियाँ R को भेजी जाएँगी।
library(DBI)
library(dplyr)
library(dbplyr)
con <- dbConnect(RSQLite::SQLite(), ':memory:')
dbWriteTable(con, 'cars', mtcars)
cars_tbl <- tbl(con, 'cars')
# Filter in the database (generates WHERE clause)
high_mpg <- cars_tbl |>
filter(mpg > 25, cyl == 4)
# Still lazy! No data fetched yet.
cat('Class:', class(high_mpg)[1], '\n')
# Collect to pull data into R:
result <- collect(high_mpg)
cat('Rows matching filter:', nrow(result))select() और mutate() लागू करना
select() का रूप SQL SELECT होता है और mutate() का रूप SELECT क्लॉज़ में गणना किए गए कॉलम होते हैं। dbplyr इस अनुवाद को संभालता है, जिसमें कई सामान्य R expressions भी शामिल हैं जिनके SQL समकक्ष उपलब्ध हैं।
library(DBI)
library(dplyr)
library(dbplyr)
con <- dbConnect(RSQLite::SQLite(), ':memory:')
dbWriteTable(con, 'cars', mtcars)
cars_tbl <- tbl(con, 'cars')
# Select specific columns + add a computed column
result <- cars_tbl |>
filter(am == 1) |> # manual transmission
select(mpg, cyl, hp, wt) |> # pick columns
mutate(wt_kg = wt * 453.592) # add computed column
# Pull into R
df <- collect(result)
cat('Columns:', names(df), '\n')
cat('Rows:', nrow(df))group_by() और summarise() — एकत्रीकरण
group_by() और summarise() का SQL GROUP BY और एकत्रीकरण फ़ंक्शन में अनुवाद होता है। इससे आप सभी पंक्तियों को पहले R में लाए बिना डेटाबेस में सारांश निकाल सकते हैं — बड़ी तालिकाओं के लिए यह अत्यंत महत्वपूर्ण है।
library(DBI)
library(dplyr)
library(dbplyr)
con <- dbConnect(RSQLite::SQLite(), ':memory:')
dbWriteTable(con, 'cars', mtcars)
cars_tbl <- tbl(con, 'cars')
# Aggregate in the database
summary_tbl <- cars_tbl |>
group_by(cyl) |>
summarise(
avg_mpg = mean(mpg, na.rm = TRUE),
max_hp = max(hp),
n_models = n()
)
result <- collect(summary_tbl)
print(result)show_query() — तैयार SQL का निरीक्षण
show_query() वह SQL दिखाता है जिसे dbplyr डेटाबेस को भेजेगा। यह त्रुटि-निवारण, प्रदर्शन बेहतर करने और यह देखकर SQL सीखने के लिए बेहद उपयोगी है कि आपका dplyr कोड किस तरह बदलता है।
library(DBI)
library(dplyr)
library(dbplyr)
con <- dbConnect(RSQLite::SQLite(), ':memory:')
dbWriteTable(con, 'cars', mtcars)
cars_tbl <- tbl(con, 'cars')
# Build a query
q <- cars_tbl |>
filter(mpg > 20) |>
group_by(cyl) |>
summarise(avg_mpg = mean(mpg, na.rm = TRUE))
# See the SQL dbplyr generated:
show_query(q)
# <SQL>
# SELECT cyl, AVG(mpg) AS avg_mpg
# FROM cars
# WHERE mpg > 20.0
# GROUP BY cylcollect() — डेटा को R में लाना
collect() आलसी क्वेरी को चलाता है और परिणामों को स्थानीय R डेटा फ़्रेम (tibble) में प्राप्त करता है। जब तक आप collect() नहीं बुलाते, डेटाबेस से R में कोई डेटा स्थानांतरित नहीं होता — सभी कार्रवाइयों का SQL में अनुवाद होकर वे सर्वर पर चलती हैं।
library(DBI)
library(dplyr)
library(dbplyr)
con <- dbConnect(RSQLite::SQLite(), ':memory:')
dbWriteTable(con, 'cars', mtcars)
cars_tbl <- tbl(con, 'cars')
# Build up a lazy query chain
lazy_q <- cars_tbl |>
filter(hp > 100) |>
select(mpg, hp, cyl) |>
arrange(desc(hp))
# Nothing fetched yet
cat('Is lazy?', inherits(lazy_q, 'tbl_sql'), '\n')
# NOW pull data into R
local_df <- collect(lazy_q)
cat('Class after collect:', class(local_df)[1], '\n')
cat('Rows:', nrow(local_df))copy_to() — स्थानीय डेटा फ़्रेम को DB में भेजना
copy_to() स्थानीय R डेटा फ़्रेम को डेटाबेस में एक (आमतौर पर अस्थायी) तालिका के रूप में लिखता है। यह स्थानीय लुकअप तालिकाओं को बड़ी दूरस्थ तालिकाओं के साथ जोड़ने या पहले से मौजूद डेटाबेस के बिना परीक्षण करने के लिए उपयोगी है।
library(DBI)
library(dplyr)
library(dbplyr)
con <- dbConnect(RSQLite::SQLite(), ':memory:')
# Push a local data frame into the database
local_df <- data.frame(
cyl = c(4, 6, 8),
category = c('efficient', 'balanced', 'powerful')
)
# copy_to creates a temporary table in the DB
copy_to(con, local_df, name = 'cyl_labels', temporary = TRUE)
# Now reference it with tbl()
labels_tbl <- tbl(con, 'cyl_labels')
cat('Rows in DB table:', collect(labels_tbl) |> nrow())डेटाबेस तालिकाओं को जोड़ना
आप dplyr के left_join(), inner_join() आदि फ़ंक्शन का उपयोग करके दो tbl() संदर्भों को जोड़ सकते हैं। dbplyr इन्हें SQL JOIN क्लॉज़ में बदल देता है — जोड़ने की प्रक्रिया डेटाबेस में चलती है।
library(DBI)
library(dplyr)
library(dbplyr)
con <- dbConnect(RSQLite::SQLite(), ':memory:')
dbWriteTable(con, 'cars', mtcars)
copy_to(con, data.frame(cyl = c(4,6,8),
label = c('four','six','eight')),
'cyl_ref', temporary = TRUE)
cars_tbl <- tbl(con, 'cars')
labels_tbl <- tbl(con, 'cyl_ref')
# Join in the database
joined <- left_join(cars_tbl, labels_tbl, by = 'cyl') |>
select(mpg, cyl, label, hp)
show_query(joined) # See the SQL JOIN
result <- collect(joined)
cat('Joined rows:', nrow(result))dbplyr का उपयोग कब न करें
dbplyr हर R expression का SQL में अनुवाद नहीं कर सकता। जटिल कस्टम फ़ंक्शन, base R में तारीखों का रूपांतरण या R-विशिष्ट सांख्यिकीय फ़ंक्शन के SQL समकक्ष उपलब्ध नहीं हो सकते। पहले collect() का उपयोग करके डेटा R में लाएँ, फिर केवल R में उपलब्ध कार्रवाइयाँ स्थानीय रूप से करें।
library(DBI)
library(dplyr)
library(dbplyr)
con <- dbConnect(RSQLite::SQLite(), ':memory:')
dbWriteTable(con, 'cars', mtcars)
cars_tbl <- tbl(con, 'cars')
# Do as much as possible in the database:
prepped <- cars_tbl |>
filter(mpg > 15) |>
select(mpg, hp, cyl) |>
collect() # <- pull only what you need
# Now apply R-only operations locally:
cor_result <- cor(prepped$mpg, prepped$hp)
cat('Correlation mpg~hp:', round(cor_result, 3))
# Rule: filter and aggregate in DB, model in Rत्वरित जाँच
tbl() डेटाबेस संदर्भ पर dplyr क्रियाओं की शृंखला बनाने के बाद, कौन-सा फ़ंक्शन क्वेरी चलाकर परिणामों को स्थानीय R डेटा फ़्रेम के रूप में लौटाता है?
dbplyr — मुख्य बातें
dbplyr आपको dplyr के सिंटैक्स से डेटाबेस की क्वेरी करने देता है — SQL लिखना आवश्यक नहीं:
tbl(con, 'table')— DB तालिका का आलसी संदर्भfilter(),select(),mutate()— SQL क्लॉज़ में अनुवादितgroup_by() |> summarise()— SQLGROUP BYमें बदलता हैshow_query()— तैयार SQL का निरीक्षण करें (सीखने के लिए बहुत अच्छा)collect()— क्वेरी चलाएँ और डेटा R में लाएँcopy_to()— स्थानीय डेटा फ़्रेम को डेटाबेस में भेजें- जोड़ भी काम करते हैं:
left_join(),inner_join()आदि - DB में फ़िल्टर और एकत्रीकरण करें; R का उपयोग केवल उन कार्यों के लिए करें जिन्हें SQL नहीं कर सकता
# Complete dbplyr workflow example:
library(DBI)
library(dplyr)
library(dbplyr)
con <- dbConnect(RSQLite::SQLite(), ':memory:')
dbWriteTable(con, 'sales', data.frame(
region = c('North','South','North','East','South'),
revenue = c(100, 200, 150, 300, 250),
year = c(2023, 2023, 2024, 2024, 2024)
))
tbl(con, 'sales') |>
filter(year == 2024) |>
group_by(region) |>
summarise(total = sum(revenue, na.rm = TRUE)) |>
arrange(desc(total)) |>
collect() |>
print()एआई शिक्षक के साथ R सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 43
- पाठ
- 159
अक्सर पूछे जाने वाले प्रश्न
क्या “dbplyr: dplyr सिंटैक्स के माध्यम से SQL” पाठ निःशुल्क है?
हाँ — R Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “dbplyr: dplyr सिंटैक्स के माध्यम से SQL” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“dbplyr: dplyr सिंटैक्स के माध्यम से SQL” में मैं क्या सीखूँगा?
ऐसा dplyr कोड लिखें जो SQL में अनुवादित होकर डेटाबेस पर चले। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ R Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या R Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर R Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“dbplyr: dplyr सिंटैक्स के माध्यम से SQL” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस R Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर R Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- DBI और RSQLite की मूल बातें
- PostgreSQL और MySQL से कनेक्ट करना
- dbplyr: dplyr सिंटैक्स के माध्यम से SQL
- पैरामीटरयुक्त क्वेरी और लेन-देन