Skip to contents

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.

Usage

DW_fetch_obj_ds_meta(state, session, dw_view = NULL, ds_obj = NULL)

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)