This function requires the bigdata library section to be loaded.
bd.sql(sql, ...)
When you use this function, you should be aware of the following limitations, unsupported, and supported statements and operations:
You can use the
WHERE
clause only on the first referenced data table in a
SQL statement.
The following functionality is not implemented:
distinct
; mathematical functions
in set or select, such as
abs
,
round
,
floor
, and so on;
natural join; union; merge; between and subqueries.
The following statements are supported:
Select
,
Insert
,
Delete
, and
Update
.
###################### ## SELECT COMMAND ###################### # In this example all the data is selected from fuel.frame. # To access fuel.frame, an alias is used (in this case, # we call it fuel) bd.sql("select * from fuel", fuel=fuel.frame) # In this example two sets of data are retrieved. # In the first, we do a simple calculation based # on two columns from the input dataset. In the # second we retrieve Weight from the input when # Type is not Van or Sporty. The alias here is # fuelDataSet. bd.sql(c("select Mileage*Fuel from fuelDataSet", "select Weight from fuelDataSet where Type!='Van' and Type!='Sporty'"), fuelDataSet=fuel.frame) # Full outer join by row. Notice that no alias is # given for heart. It is simply referenced as heart. bd.sql("select * from fuel, heart", fuel=fuel.frame, heart) # Inner join by row bd.sql("select * from fuel join heart", fuel=fuel.frame, heart) # Cross product of all rows in fuel with itself bd.sql("select * from fuel cross join fuel", fuel=fuel.frame) # Inner join of fuel to itself with left key column of Weight # and right key column of Fuel bd.sql("select * from leftFuel left outer join rightFuel on leftFuel.Weight=rightFuel.Fuel", leftFuel=fuel.frame, rightFuel=fuel.frame) # Recursive joins bd.sql("select * from leftFuel left outer join rightFuel on leftFuel.Weight=rightFuel.Weight right outer join secondRightFuel on Weight=rightFuel.Weight", leftFuel=fuel.frame, rightFuel=fuel.frame, secondRightFuel=fuel.frame) # Aggregation bd.sql("select avg(Fuel) from fuel group by Type", fuel=fuel.frame) bd.sql("select min(Fuel), max(Fuel) from fuel group by Type", fuel=fuel.frame) bd.sql("select min(Fuel), max(Fuel) from fuel group by Type having avg(Weight) > 3000", fuel=fuel.frame) # Define column source bd.sql("select fuel.Fuel, heart.id from fuel, heart", fuel=fuel.frame, heart=heart) ###################### ## INSERT COMMAND ###################### # Single row insertion (entire row) bd.sql("insert into fuel values (1, 1, 1, 1, 'Domestic')", fuel=fuel.frame) # Single row insertion (selected columns) bd.sql("insert into fuel (Fuel, Type) values (1, 'Domestic')", fuel=fuel.frame) # Multiple row insertion (entire row) bd.sql("insert into fuel values (1, 1, 1, 1, 'Domestic') values (2, 2, 2, 2, 'Domestic')", fuel=fuel.frame) # Multiple row insertion (selected columns) bd.sql("insert into fuel (Fuel, Type) values (1, 'Domestic') values (2, 'Domestic')", fuel=fuel.frame) ###################### ## DELETE COMMAND ###################### # Simple row deletion bd.sql("delete from fuel where Mileage >= 20 or Type = 'Sporty'", fuel=fuel.frame) ###################### ## UPDATE COMMAND ###################### # Apply transformation to all rows in Fuel column bd.sql("update fuel set Fuel=Fuel*1.15", fuel=fuel.frame) # Apply transformation to all only rows where Mileage is 18 bd.sql("update fuel set Fuel=Fuel*1.15 where Mileage=18", fuel=fuel.frame) # Apply multiple transformations when Mileage is 18 bd.sql("update fuel set Fuel=Fuel*1.15, Type='Mileage18' where Mileage=18", fuel=fuel.frame)