The dm
class holds a list of tables and their relationships.
It is inspired by datamodelr,
and extends the idea by offering operations to access the data in the tables.
dm()
creates a dm
object from tbl objects
(tibbles or lazy data objects).
new_dm()
is a low-level constructor that creates a new dm
object.
If called without arguments, it will create an empty dm
.
If called with arguments, no validation checks will be made to ascertain that
the inputs are of the expected class and internally consistent;
use validate_dm()
to double-check the returned object.
validate_dm()
checks the internal consistency of a dm
object.
dm_get_src()
returns the dplyr source for a dm
object.
All tables in a dm
object must be from the same source,
i.e. either they are all data frames, or they all are stored on the same
database.
dm_get_con()
returns the DBI::DBIConnection
for dm
objects.
This works only if the tables are stored on a database, otherwise an error
is thrown.
dm_get_tables()
returns a named list of dplyr tbl objects
of a dm
object.
Filtering expressions are NOT evaluated at this stage.
To get a filtered table, use dm_apply_filters_to_tbl()
, to apply filters to all tables use dm_apply_filters()
is_dm()
returns TRUE
if the input is of class dm
.
as_dm()
coerces objects to the dm
class
dm(..., .name_repair = c("check_unique", "unique", "universal", "minimal")) new_dm(tables = list()) validate_dm(x) dm_get_src(x) dm_get_con(x) dm_get_tables(x) is_dm(x) as_dm(x)
... | Tables to add to the |
---|---|
.name_repair | Options for name repair.
Forwarded as |
tables | A named list of the tables (tibble-objects, not names),
to be included in the |
x | An object. |
For dm()
, new_dm()
, as_dm()
: A dm
object.
For validate_dm()
: Returns the dm
, invisibly, after finishing all checks.
For dm_get_src()
: the dplyr source for a dm
object,
or NULL
if the dm
objcet contains data frames.
For dm_get_con()
: The DBI::DBIConnection
for dm
objects.
For dm_get_tables()
: A named list with the tables constituting the dm
.
For is_dm()
: Boolean, is this object a dm
.
dm_from_src()
for connecting to all tables in a database
and importing the primary and foreign keys
dm_add_pk()
and dm_add_fk()
for adding primary and foreign keys
copy_dm_to()
for DB interaction
dm_draw()
for visualization
dm_join_to_tbl()
for flattening
dm_filter()
for filtering
dm_select_tbl()
for creating a dm
with only a subset of the tables
dm_nycflights13()
for creating an example dm
object
decompose_table()
for table surgery
check_key()
and check_subset()
for checking for key properties
examine_cardinality()
for checking the cardinality of the relation between two tables
dm(trees, mtcars)#> ── Metadata ──────────────────────────────────────────────────────────────────── #> Tables: `trees`, `mtcars` #> Columns: 14 #> Primary keys: 0 #> Foreign keys: 0#> ── Metadata ──────────────────────────────────────────────────────────────────── #> Tables: `trees`, `mtcars` #> Columns: 14 #> Primary keys: 0 #> Foreign keys: 0#> ── Metadata ──────────────────────────────────────────────────────────────────── #> Tables: `trees`, `mtcars` #> Columns: 14 #> Primary keys: 0 #> Foreign keys: 0#> # A tibble: 1,458 x 8 #> faa name lat lon alt tz dst tzone #> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <chr> #> 1 04G Lansdowne Airport 41.1 -80.6 1044 -5 A America/New_Yo… #> 2 06A Moton Field Municipal A… 32.5 -85.7 264 -6 A America/Chicago #> 3 06C Schaumburg Regional 42.0 -88.1 801 -6 A America/Chicago #> 4 06N Randall Airport 41.4 -74.4 523 -5 A America/New_Yo… #> 5 09J Jekyll Island Airport 31.1 -81.4 11 -5 A America/New_Yo… #> 6 0A9 Elizabethton Municipal … 36.4 -82.2 1593 -5 A America/New_Yo… #> 7 0G6 Williams County Airport 41.5 -84.5 730 -5 A America/New_Yo… #> 8 0G7 Finger Lakes Regional A… 42.9 -76.8 492 -5 A America/New_Yo… #> 9 0P2 Shoestring Aviation Air… 39.8 -76.6 1000 -5 U America/New_Yo… #> 10 0S9 Jefferson County Intl 48.1 -123. 108 -8 A America/Los_An… #> # … with 1,448 more rows#> [1] "airlines" "airports" "flights" "planes" "weather"#> NULL#> Warning: The `unique_table_names` argument of `copy_dm_to()` is deprecated as of dm 0.1.4. #> Use `table_names = identity` to use unchanged names for temporary tables. #> This warning is displayed once every 8 hours. #> Call `lifecycle::last_warnings()` to see where this warning was generated.#> <SQLiteConnection> #> Path: :memory: #> Extensions: TRUE#> $airlines #> # A tibble: 16 x 2 #> carrier name #> <chr> <chr> #> 1 9E Endeavor Air Inc. #> 2 AA American Airlines Inc. #> 3 AS Alaska Airlines Inc. #> 4 B6 JetBlue Airways #> 5 DL Delta Air Lines Inc. #> 6 EV ExpressJet Airlines Inc. #> 7 F9 Frontier Airlines Inc. #> 8 FL AirTran Airways Corporation #> 9 HA Hawaiian Airlines Inc. #> 10 MQ Envoy Air #> 11 OO SkyWest Airlines Inc. #> 12 UA United Air Lines Inc. #> 13 US US Airways Inc. #> 14 VX Virgin America #> 15 WN Southwest Airlines Co. #> 16 YV Mesa Airlines Inc. #> #> $airports #> # A tibble: 1,458 x 8 #> faa name lat lon alt tz dst tzone #> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <chr> #> 1 04G Lansdowne Airport 41.1 -80.6 1044 -5 A America/New_Yo… #> 2 06A Moton Field Municipal A… 32.5 -85.7 264 -6 A America/Chicago #> 3 06C Schaumburg Regional 42.0 -88.1 801 -6 A America/Chicago #> 4 06N Randall Airport 41.4 -74.4 523 -5 A America/New_Yo… #> 5 09J Jekyll Island Airport 31.1 -81.4 11 -5 A America/New_Yo… #> 6 0A9 Elizabethton Municipal … 36.4 -82.2 1593 -5 A America/New_Yo… #> 7 0G6 Williams County Airport 41.5 -84.5 730 -5 A America/New_Yo… #> 8 0G7 Finger Lakes Regional A… 42.9 -76.8 492 -5 A America/New_Yo… #> 9 0P2 Shoestring Aviation Air… 39.8 -76.6 1000 -5 U America/New_Yo… #> 10 0S9 Jefferson County Intl 48.1 -123. 108 -8 A America/Los_An… #> # … with 1,448 more rows #> #> $flights #> # A tibble: 11,227 x 19 #> year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time #> <int> <int> <int> <int> <int> <dbl> <int> <int> #> 1 2013 1 10 3 2359 4 426 437 #> 2 2013 1 10 16 2359 17 447 444 #> 3 2013 1 10 450 500 -10 634 648 #> 4 2013 1 10 520 525 -5 813 820 #> 5 2013 1 10 530 530 0 824 829 #> 6 2013 1 10 531 540 -9 832 850 #> 7 2013 1 10 535 540 -5 1015 1017 #> 8 2013 1 10 546 600 -14 645 709 #> 9 2013 1 10 549 600 -11 652 724 #> 10 2013 1 10 550 600 -10 649 703 #> # … with 11,217 more rows, and 11 more variables: arr_delay <dbl>, #> # carrier <chr>, flight <int>, tailnum <chr>, origin <chr>, dest <chr>, #> # air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm> #> #> $planes #> # A tibble: 3,322 x 9 #> tailnum year type manufacturer model engines seats speed engine #> <chr> <int> <chr> <chr> <chr> <int> <int> <int> <chr> #> 1 N10156 2004 Fixed wing m… EMBRAER EMB-1… 2 55 NA Turbo-… #> 2 N102UW 1998 Fixed wing m… AIRBUS INDUST… A320-… 2 182 NA Turbo-… #> 3 N103US 1999 Fixed wing m… AIRBUS INDUST… A320-… 2 182 NA Turbo-… #> 4 N104UW 1999 Fixed wing m… AIRBUS INDUST… A320-… 2 182 NA Turbo-… #> 5 N10575 2002 Fixed wing m… EMBRAER EMB-1… 2 55 NA Turbo-… #> 6 N105UW 1999 Fixed wing m… AIRBUS INDUST… A320-… 2 182 NA Turbo-… #> 7 N107US 1999 Fixed wing m… AIRBUS INDUST… A320-… 2 182 NA Turbo-… #> 8 N108UW 1999 Fixed wing m… AIRBUS INDUST… A320-… 2 182 NA Turbo-… #> 9 N109UW 1999 Fixed wing m… AIRBUS INDUST… A320-… 2 182 NA Turbo-… #> 10 N110UW 1999 Fixed wing m… AIRBUS INDUST… A320-… 2 182 NA Turbo-… #> # … with 3,312 more rows #> #> $weather #> # A tibble: 861 x 15 #> origin year month day hour temp dewp humid wind_dir wind_speed #> <chr> <int> <int> <int> <int> <dbl> <dbl> <dbl> <dbl> <dbl> #> 1 EWR 2013 1 10 0 41 32 70.1 230 8.06 #> 2 EWR 2013 1 10 1 39.0 30.0 69.9 210 9.21 #> 3 EWR 2013 1 10 2 39.0 28.9 66.8 230 6.90 #> 4 EWR 2013 1 10 3 39.9 27.0 59.5 270 5.75 #> 5 EWR 2013 1 10 4 41 26.1 55.0 320 6.90 #> 6 EWR 2013 1 10 5 41 26.1 55.0 300 12.7 #> 7 EWR 2013 1 10 6 39.9 25.0 54.8 280 6.90 #> 8 EWR 2013 1 10 7 41 25.0 52.6 330 6.90 #> 9 EWR 2013 1 10 8 43.0 25.0 48.7 330 8.06 #> 10 EWR 2013 1 10 9 45.0 23 41.6 320 17.3 #> # … with 851 more rows, and 5 more variables: wind_gust <dbl>, precip <dbl>, #> # pressure <dbl>, visib <dbl>, time_hour <dttm> #>#> # A tibble: 0 x 3 #> # … with 3 variables: table <chr>, filter <list>, zoomed <lgl>#> [1] TRUE#> ── Metadata ──────────────────────────────────────────────────────────────────── #> Tables: `airports` #> Columns: 8 #> Primary keys: 1 #> Foreign keys: 0#> # A tibble: 1,458 x 8 #> faa name lat lon alt tz dst tzone #> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <chr> #> 1 04G Lansdowne Airport 41.1 -80.6 1044 -5 A America/New_Yo… #> 2 06A Moton Field Municipal A… 32.5 -85.7 264 -6 A America/Chicago #> 3 06C Schaumburg Regional 42.0 -88.1 801 -6 A America/Chicago #> 4 06N Randall Airport 41.4 -74.4 523 -5 A America/New_Yo… #> 5 09J Jekyll Island Airport 31.1 -81.4 11 -5 A America/New_Yo… #> 6 0A9 Elizabethton Municipal … 36.4 -82.2 1593 -5 A America/New_Yo… #> 7 0G6 Williams County Airport 41.5 -84.5 730 -5 A America/New_Yo… #> 8 0G7 Finger Lakes Regional A… 42.9 -76.8 492 -5 A America/New_Yo… #> 9 0P2 Shoestring Aviation Air… 39.8 -76.6 1000 -5 U America/New_Yo… #> 10 0S9 Jefferson County Intl 48.1 -123. 108 -8 A America/Los_An… #> # … with 1,448 more rows#> # A tibble: 1,458 x 8 #> faa name lat lon alt tz dst tzone #> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <chr> #> 1 04G Lansdowne Airport 41.1 -80.6 1044 -5 A America/New_Yo… #> 2 06A Moton Field Municipal A… 32.5 -85.7 264 -6 A America/Chicago #> 3 06C Schaumburg Regional 42.0 -88.1 801 -6 A America/Chicago #> 4 06N Randall Airport 41.4 -74.4 523 -5 A America/New_Yo… #> 5 09J Jekyll Island Airport 31.1 -81.4 11 -5 A America/New_Yo… #> 6 0A9 Elizabethton Municipal … 36.4 -82.2 1593 -5 A America/New_Yo… #> 7 0G6 Williams County Airport 41.5 -84.5 730 -5 A America/New_Yo… #> 8 0G7 Finger Lakes Regional A… 42.9 -76.8 492 -5 A America/New_Yo… #> 9 0P2 Shoestring Aviation Air… 39.8 -76.6 1000 -5 U America/New_Yo… #> 10 0S9 Jefferson County Intl 48.1 -123. 108 -8 A America/Los_An… #> # … with 1,448 more rows