Skip to contents

If you haven’t already, please read the vignette("get-started") before preceding.

smartabaseR contains several helper functions that are called from other exported functions. The two main ones are sb_get_user() and sb_get_group().

sb_get_user()

sb_get_user() leverages the Smartabase API to get user data out of Smartabase and into your R session. User data includes identifying information like user ID, about, first/last name, username and email. If the include_all_cols option is to TRUE, extra user information is included like phone numbers, addresses, UUIDs and groups/roles information.

Furthermore, you can filter for certain users via the user_key and user_value filters. Note: if these arguments are left empty, then all data for every user you have access to will be returned.

Why is sb_get_user() useful? Recall that the Smartabase API requires athletes’ user IDs when importing into Smartabase with sb_insert_event() etc. (see vignette("importing-data")). sb_get_user() is just one way to find your athletes’ user IDs for use with sb_insert_event() and the rest of the import functions.

filter

user_key/user_value

user_key and user_value allow you to get user data for specific Smartabase users.

user_key represents the user identification method: “about”, “user_id”, “username” or “email”.

about

All filter values must be generated by the relevant helper function. So, if we’re using sb_get_user() to export user data only for the athlete Jamie Anderson, we would need to use sb_get_user_filter() along with the user_key and user_value options:

sb_get_user(
  url = "example.smartabase.com/site",
  username = "example.username",
  password = "example_password",
  filter = sb_get_user_filter(
    user_key = "about",
    user_value = "Jamie Anderson"
  )
)

If user_key = "about", data_value accepts full names.

See vignette("exporting-data") for a breakdown of the other possible user_key arguments.

option

include_all_cols

By default, sb_get_user() returns user_id, first_name, last_name, username and email, for each user. However, if we set include_all_cols to TRUE within sb_get_user_option(), then dob, middle_name, known_as, sex, phone and address is also returned.

Note: phone and address are returned as lists of tibbles.

Note #2: if only a single athlete is returned in the payload, then group and role columns (lists of tibbles) are also returned.

user_data <- sb_get_user(
  url = "example.smartabase.com/site",
  username = "example.username",
  password = "example_password",
  filter = sb_get_user_option(
    include_all_cols = TRUE
  )
)
user_data
#> # A tibble: 1 × 15
#>   user_id about   first_name last_name username email dob   middle_name known_as
#>     <dbl> <chr>   <chr>      <chr>     <chr>    <chr> <chr> <chr>       <chr>   
#> 1   12000 Jamie … Jamie      Anderson  jamie.a… jami… 01/0… ""          ""      
#> # ℹ 6 more variables: sex <chr>, athlete_group <list>, coach_group <list>,
#> #   role <list>, phone <list>, address <list>

To unnest a list column, you can use the unnest() from tidyr:

tidyr::unnest(user_data, athlete_group)
#> # A tibble: 2 × 16
#>   user_id about   first_name last_name username email dob   middle_name known_as
#>     <dbl> <chr>   <chr>      <chr>     <chr>    <chr> <chr> <chr>       <chr>   
#> 1   12000 Jamie … Jamie      Anderson  jamie.a… jami… 01/0… ""          ""      
#> 2   12000 Jamie … Jamie      Anderson  jamie.a… jami… 01/0… ""          ""      
#> # ℹ 7 more variables: sex <chr>, athlete_group_id <dbl>,
#> #   athlete_group_name <chr>, coach_group <list>, role <list>, phone <list>,
#> #   address <list>

sb_get_group()

sb_get_group() returns a list of Smartabase groups available to your account. It’s arguments are username, password and url.

sb_get_group(
  url = "example.smartabase.com/site",
  username = "example.username",
  password = "example_password"
)
#> # A tibble: 3 × 1
#>   group     
#>   <chr>     
#> 1 All Users 
#> 2 First Team
#> 3 Reserves

sb_select_metadata()

Once data has been exported from Smartabase, it is often desirable to retain the metadata variables (e.g. about, start_time etc.) in the data frame before importing back to Smartabase. This helper function will look for any metadata variables present in a data frame and return them, as opposed to needing to write out write out metadata variables names yourself. For example:

example_df <- dplyr::tibble(
  about = c("Jamie Anderson", "Charlie Thompson"),
  start_date = c("14/02/2023", "14/02/2023"),
  form = "Hydration",
  `Body Weight pre training` = round(runif(2, 82, 92), 0),
  `Body Weight post training` = round(runif(2, 82, 92), 0),
  `Urine Colour` = round(runif(2, 1, 8), 0),
  end_date = c("14/02/2023", "14/02/2023")
)

example_df %>% dplyr::select(sb_select_metadata(.))
#> # A tibble: 2 × 4
#>   about            start_date form      end_date  
#>   <chr>            <chr>      <chr>     <chr>     
#> 1 Jamie Anderson   14/02/2023 Hydration 14/02/2023
#> 2 Charlie Thompson 14/02/2023 Hydration 14/02/2023