
Fetches Metadata for a Data Source Based on R Object Name
Source:R/DW_Server.R
DW_fetch_obj_ds_meta.Rd
Data sources can be either resources from other modules (e.g. UD and DM) or previously defined dataviews. This function is a simple interface to retrieve a data source based on the source ID or label.
Resources such as datasets can be specified using the module ID and either identifier index or the resource label. This function will attempt to rectify those and give the "best" answer. If a resource label is supplied and exists uniquely for that module ID, that object will be returned. If not then an error will be returned. If the resource label is not specified and the index is specified and that exists uniquely, that object will be returned. Otherwise an error will be returned.
Arguments
- state
DW state from
DW_fetch_state()
- session
Shiny session variable
- dw_view
Optoinal data view to use as a reference point for DW data sources set to NULL if only formods sources are to be used.
- ds_obj
Name of object that contains data source
Value
list containing the current dataset with the following format:
isgood: Boolean indicating the whether a resource object was found.
msgs: Any messages generated
res_row: Row of catalog associated with resource or
NULL
if not found.DS: Data frame of the current resource
Examples
library(formods)
# The example requires a formods DW state object
sess_res = DW_test_mksession()
#> → ASM: including file
#> → ASM: source: file.path(system.file(package="onbrand"), "templates", "report.docx")
#> → ASM: dest: file.path("config","report.docx")
#> → ASM: including file
#> → ASM: source: file.path(system.file(package="onbrand"), "templates", "report.pptx")
#> → ASM: dest: file.path("config","report.pptx")
#> → ASM: including file
#> → ASM: source: file.path(system.file(package="onbrand"), "templates", "report.yaml")
#> → ASM: dest: file.path("config","report.yaml")
#> → ASM: State initialized
#> → ASM: setting word placeholders:
#> → ASM: -> setting docx ph: HEADERLEFT = left header
#> → ASM: -> setting docx ph: HEADERRIGHT = right header
#> → ASM: -> setting docx ph: FOOTERLEFT = left footer
#> → ASM: module isgood: TRUE
#> → UD: including file
#> → UD: source: file.path(system.file(package="onbrand"), "templates", "report.docx")
#> → UD: dest: file.path("config","report.docx")
#> → UD: including file
#> → UD: source: file.path(system.file(package="onbrand"), "templates", "report.pptx")
#> → UD: dest: file.path("config","report.pptx")
#> → UD: including file
#> → UD: source: file.path(system.file(package="onbrand"), "templates", "report.yaml")
#> → UD: dest: file.path("config","report.yaml")
#> → UD: State initialized
#> → UD: module checksum updated:897d952fecbc804999396a96f9df4b20
#> → UD: module isgood: TRUE
#> → DM: including file
#> → DM: source: file.path(system.file(package="onbrand"), "templates", "report.docx")
#> → DM: dest: file.path("config","report.docx")
#> → DM: including file
#> → DM: source: file.path(system.file(package="onbrand"), "templates", "report.pptx")
#> → DM: dest: file.path("config","report.pptx")
#> → DM: including file
#> → DM: source: file.path(system.file(package="onbrand"), "templates", "report.yaml")
#> → DM: dest: file.path("config","report.yaml")
#> → DM: module checksum updated: 441abbd92e02d893eb5136ccdfcc717d
#> → DM: State initialized
#> → DM: ds checksum updated: 641fcbc6616d24d05acded4317a3bb12
#> → DM: module checksum updated: 5c077c5702479f330bf233040eb4a51b
#> → DM: adding preload sources
#> → DM: - file added: TEST_DATA.xlsx
#> → DM: added: TEST_DATA.xlsx
#> → DM: - url added: https://raw.githubusercontent.com/john-harrold/formods/refs/heads/master/inst/test_data/SDTM_PC.csv
#> → DM: url added: https://raw.githubusercontent.com/john-harrold/formods/refs/heads/master/inst/test_data/SDTM_PC.csv
#> → DM: - url added: https://raw.githubusercontent.com/john-harrold/formods/refs/heads/master/inst/test_data/SDTM_EX.csv
#> → DM: url added: https://raw.githubusercontent.com/john-harrold/formods/refs/heads/master/inst/test_data/SDTM_EX.csv
#> → DM: - url added: https://raw.githubusercontent.com/john-harrold/formods/refs/heads/master/inst/test_data/SDTM_DM.csv
#> → DM: url added: https://raw.githubusercontent.com/john-harrold/formods/refs/heads/master/inst/test_data/SDTM_DM.csv
#> → DM: loading element idx: 1
#> → DM: ds checksum updated: 0cc906570cc2b59c9119c429de647914
#> → DM: module checksum updated: 5c33742ed18f5cbb14b419f69997b670
#> → DM: added element idx: 1
#> → DM: loading element idx: 2
#> → DM: ds checksum updated: 16bba1e9476aec7d1a898e892300f526
#> → DM: module checksum updated: 0beb186183183b7d718e547ffdd3dc8e
#> → DM: added element idx: 2
#> → DM: loading element idx: 3
#> → DM: ds checksum updated: 5fa8568025bbeb97f5c9755a9e87118f
#> → DM: module checksum updated: 167c1617591fd3719b42eb8623ab8647
#> → DM: added element idx: 3
#> → DM: loading element idx: 4
#> → DM: ds checksum updated: 7501bc5a6812776a9b4d54002f349361
#> → DM: module checksum updated: a2ad8d675408ed1b2e266e019ceeff38
#> → DM: added element idx: 4
#> → DM: module isgood: TRUE
#> → DW: including file
#> → DW: source: file.path(system.file(package="onbrand"), "templates", "report.docx")
#> → DW: dest: file.path("config","report.docx")
#> → DW: including file
#> → DW: source: file.path(system.file(package="onbrand"), "templates", "report.pptx")
#> → DW: dest: file.path("config","report.pptx")
#> → DW: including file
#> → DW: source: file.path(system.file(package="onbrand"), "templates", "report.yaml")
#> → DW: dest: file.path("config","report.yaml")
#> → DW: data view checksum updated:
#> → DW: old:
#> → DW: new: e19ddb59715ba77afdd1907053aa5d14
#> → DW: module checksum updated:a9496b622f92f683cc8c69f65ac1ece4
#> → DW: State initialized
#> → DW: data view checksum updated:
#> → DW: old:
#> → DW: new: e19ddb59715ba77afdd1907053aa5d14
#> → DW: module checksum updated:0955d1f9a1922b95277b4ad1df38e987
#> → DW: data view checksum updated:
#> → DW: old:
#> → DW: new: e19ddb59715ba77afdd1907053aa5d14
#> → DW: module checksum updated:3d3523604fcde20ce1792b16611bdba2
#> → DW: data view checksum updated:
#> → DW: old:
#> → DW: new: e19ddb59715ba77afdd1907053aa5d14
#> → DW: module checksum updated:dfec3d5aa14c2716ccf367706931693f
#> → DW: loading data view idx: 1
#> → DW: -> setting data source: myDS
#> → DW: setting name: Observations
#> → DW: module checksum updated:4d9fd3d913355669d14e0ac710b0b5dc
#> → DW: -> filter
#> → DW: data view checksum updated:
#> → DW: old: e19ddb59715ba77afdd1907053aa5d14
#> → DW: new: 0017bd7cdc15ff708408b2d60672ef88
#> → DW: module checksum updated:2aba88838dee694a3d2813ed9f2837d2
#> → DW: -> filter
#> → DW: data view checksum updated:
#> → DW: old: 0017bd7cdc15ff708408b2d60672ef88
#> → DW: new: 278da634fa74dc23eae6db31314e0324
#> → DW: module checksum updated:c181a352a2bd3592494d917b87057086
#> → DW: -> mutate
#> → DW: data view checksum updated:
#> → DW: old: 278da634fa74dc23eae6db31314e0324
#> → DW: new: a164ecd5a527b2b38058230c1daa0080
#> → DW: module checksum updated:048df4e8afa9494121e72808981c842c
#> → DW: loading data view idx: 2
#> → DW: -> setting data source: myDS
#> → DW: setting name: PK 3mg SD IV
#> → DW: module checksum updated:c54c6fc20ff13fd14fbb61c786f65078
#> → DW: -> filter
#> → DW: data view checksum updated:
#> → DW: old: e19ddb59715ba77afdd1907053aa5d14
#> → DW: new: 0017bd7cdc15ff708408b2d60672ef88
#> → DW: module checksum updated:496c1149f14ec1c48d4ddbc5aec72a72
#> → DW: -> filter
#> → DW: data view checksum updated:
#> → DW: old: 0017bd7cdc15ff708408b2d60672ef88
#> → DW: new: 278da634fa74dc23eae6db31314e0324
#> → DW: module checksum updated:d65a6b3c16bea4262f7fb15a1d961512
#> → DW: -> filter
#> → DW: data view checksum updated:
#> → DW: old: 278da634fa74dc23eae6db31314e0324
#> → DW: new: 00bd5f01d02d634acf134cf01970a1c3
#> → DW: module checksum updated:f90816b8f2ef9aeaad82e4a00880e536
#> → DW: -> filter
#> → DW: data view checksum updated:
#> → DW: old: 00bd5f01d02d634acf134cf01970a1c3
#> → DW: new: a01562e32a19fd4b10f88ace089346c6
#> → DW: module checksum updated:452fc9d9131592650a93b4b49de961d1
#> → DW: loading data view idx: 3
#> → DW: -> setting data source: myDS
#> → DW: setting name: PK 3mg SD IV (NCA)
#> → DW: module checksum updated:3b177ed09a80dfaf15c9f3dde8b9a8fb
#> → DW: -> filter
#> → DW: data view checksum updated:
#> → DW: old: e19ddb59715ba77afdd1907053aa5d14
#> → DW: new: 0017bd7cdc15ff708408b2d60672ef88
#> → DW: module checksum updated:ce7e35b3bc2e1f53088ae7edd5b4345e
#> → DW: -> filter
#> → DW: data view checksum updated:
#> → DW: old: 0017bd7cdc15ff708408b2d60672ef88
#> → DW: new: 198f7d878f23121868e677c0b86a5f3c
#> → DW: module checksum updated:64a5146d5e7070664557a7ff3d80f6f0
#> → DW: -> filter
#> → DW: data view checksum updated:
#> → DW: old: 198f7d878f23121868e677c0b86a5f3c
#> → DW: new: 4326a7b6b9040676b320b387ba5b8ad9
#> → DW: module checksum updated:2cf968d6e72262f9274ea0389f717e84
#> → DW: loading data view idx: 4
#> → DW: -> setting data source: myDS
#> → DW: setting name: PKPD 3mg SD IV (NCA)
#> → DW: module checksum updated:67e9d6e6b2e085808be155613f8efe20
#> → DW: -> filter
#> → DW: data view checksum updated:
#> → DW: old: e19ddb59715ba77afdd1907053aa5d14
#> → DW: new: 0017bd7cdc15ff708408b2d60672ef88
#> → DW: module checksum updated:a7a211de4eb91c91098a1f20e62bec73
#> → DW: -> filter
#> → DW: data view checksum updated:
#> → DW: old: 0017bd7cdc15ff708408b2d60672ef88
#> → DW: new: 198f7d878f23121868e677c0b86a5f3c
#> → DW: module checksum updated:306f66790aca305ff1b715f34802610e
#> → DW: -> filter
#> → DW: module isgood: TRUE
#> → # preload_complete is good: TRUE ------------------------------------------
state = sess_res$state
session = sess_res$session
state[["DW"]][["ui"]][["select_dw_element"]] = "filter"
state[["DW"]][["ui"]][["select_fds_filter_column"]] = "EVID"
state[["DW"]][["ui"]][["select_fds_filter_operator"]] = "=="
state[["DW"]][["ui"]][["fds_filter_rhs"]] = 0
# This builds the data wrangling statement based on
# elemets scraped from the UI
dwb_res = dwrs_builder(state)
# Here we evaluate the resulting command:
dwee_res = dw_eval_element(state, dwb_res[["cmd"]])
# Next we add this wrangling element to the state
state = DW_add_wrangling_element(
state = state,
session = session,
dwb_res = dwb_res,
dwee_res = dwee_res)
# This creates a new data view and makes it active
state = DW_new_view(state)
#> → DW: data view checksum updated:
#> → DW: old:
#> → DW: new: e19ddb59715ba77afdd1907053aa5d14
#> → DW: module checksum updated:9977a27298f6aaec5ed4d8fbf0d4563a
# Here we can pluck out that data view from the state
current_view = DW_fetch_current_view(state)
# This will update the key in this view
current_view[["key"]] = "My new view"
# And this will place it back into the state
state = DW_set_current_view(state, session, current_view)
#> → DW: module checksum updated:0ab95fcc31d9d3ca9b3595984babc650
# This will pull out the available sources for the current data view.
# This is used when doing merging:
avail_ds = DW_fetch_available_sources(state, session, dw_view=current_view)
# This will pull out the meta data for a given object
ds_obj = avail_ds[["catalog"]][["object"]][1]
ds_meta = DW_fetch_obj_ds_meta(
state = state,
session = session,
dw_view=current_view,
ds_obj=ds_obj)