Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
195 commits
Select commit Hold shift + click to select a range
c9cf144
print statements for data source tables
Sep 16, 2014
e8e6c36
updating readme for changes to aggregate tables, adding reporting stuff
Sep 16, 2014
96e97b9
Remove plyr, modify indicator evaluation
rdayalu Sep 16, 2014
97fd7f2
Figured out scale_fill_manual for stacked graph and worked with subse…
rdayalu Sep 17, 2014
37b6373
fixed sector/subsector array parsing issues
Sep 17, 2014
326850d
Merge branch 'master' of https://github.com/dimagi/dimagi-data-platfo…
rdayalu Sep 17, 2014
a185d39
expect list of values for filter, not comma-separated string
Sep 17, 2014
c027500
Merge branch 'master' of https://github.com/dimagi/dimagi-data-platfo…
rdayalu Sep 18, 2014
9d7c834
Merge branch 'master' of https://github.com/dimagi/dimagi-data-platfo…
rdayalu Sep 18, 2014
1e70da6
meaningless change - test
rdayalu Sep 18, 2014
6ccbfaa
Another meaningless change for testing
rdayalu Sep 18, 2014
a959a55
Final test - to give error message to Daniel for help!
rdayalu Sep 18, 2014
23570fc
Merge branch 'rdayalu-analysis' of https://github.com/dimagi/dimagi-d…
rdayalu Sep 18, 2014
e7749a1
Remove library(zoo)
rdayalu Sep 18, 2014
ce16332
Monthly index modified.
rdayalu Sep 19, 2014
20f5b68
Added new domains to exclude
rdayalu Sep 19, 2014
d1177c7
Import any table from the database through the DB connections.
rdayalu Oct 1, 2014
9c2b718
Converted all to generic functions for unspecified data
rdayalu Oct 7, 2014
9437a1d
Added library(data.table)
rdayalu Oct 10, 2014
068512a
Merge pull request #12 from dimagi/rdayalu-analysis
mloudon Oct 10, 2014
05784b9
adding numeric index, with 2010-01-01 as first valid visit (numeric_i…
Oct 10, 2014
7a2f1cf
Indicator development - need to confirm which indicators are calculat…
rdayalu Oct 10, 2014
d0c3ef5
Merge branch 'rdayalu-analysis' of https://github.com/dimagi/dimagi-d…
rdayalu Oct 10, 2014
7afda1b
script to get followup rates by case type for a single domain
Oct 11, 2014
7d95caf
moving once-off followup by case type analysis to misc_scripts
Oct 11, 2014
847116b
Merge pull request #13 from dimagi/rdayalu-analysis
mloudon Oct 11, 2014
cd318d0
some indicator functions should operate only on visits, not on intera…
Oct 11, 2014
72f1272
Merge branch 'master' of https://github.com/dimagi/dimagi-data-platfo…
rdayalu Oct 14, 2014
e9d40af
Modifying indicator calculations for visits vs. interactions
rdayalu Oct 14, 2014
f8c4e97
fixing numeric_index function, now returns 1 as numeric index for any…
Oct 16, 2014
4faf0b3
Remove numeric_index calculation since it is now created at the aggre…
rdayalu Oct 16, 2014
198bfaa
Import full interactions table.
rdayalu Oct 16, 2014
b423d4a
Merge branch 'rdayalu-analysis' of https://github.com/dimagi/dimagi-d…
rdayalu Oct 16, 2014
4ab0eb6
Move analysis scripts to data platform
rdayalu Oct 17, 2014
6e81f7f
adding limit param to data sources for db tables
Oct 18, 2014
108150c
Merge branch 'master' of https://github.com/dimagi/dimagi-data-platfo…
rdayalu Oct 20, 2014
0ae5fe5
Tula analysis
rdayalu Oct 20, 2014
2360474
updates for data model changes to case_event, form, form_def, applica…
Oct 22, 2014
82a1672
Tula test 1/2 refinement
rdayalu Oct 22, 2014
efe9361
Added time_using_cc to aggregate_tables.json
rdayalu Oct 22, 2014
3653296
Merge pull request #14 from dimagi/rdayalu-analysis
mloudon Oct 22, 2014
77794eb
remove obsolete unique visits function, fix accidentally not writing …
Oct 22, 2014
37df2d5
Dag's report module
rdayalu Oct 23, 2014
fad1671
Modify Dag's code, import just a subset of db tables.
rdayalu Oct 23, 2014
3dcf6f2
this is a test crs script
oddmilk Oct 27, 2014
f2d51d1
device logs data source
mloudon Oct 27, 2014
86fc21b
adding device log indicators to aggregate tables
mloudon Oct 28, 2014
21e084a
case followup rate computation code
oddmilk Oct 28, 2014
afeb3a2
aggregate device logs by domain,user_id, month.index, log_type before…
mloudon Oct 28, 2014
954ce38
sum monthly log counts for lifetime table
Oct 28, 2014
0a6aa79
Streamlining data platform folder
rdayalu Oct 30, 2014
d77d683
Clarify headers for some analysis scripts
rdayalu Oct 30, 2014
c93cd16
add user_pk to aggregate tables, fix get_data_source bug when limit i…
Oct 30, 2014
87c0177
Merge pull request #16 from dimagi/rdayalu-analysis
mloudon Oct 30, 2014
90d0629
remove conversion of NA user_ids to 'NONE', no longer needed
Nov 1, 2014
a5f30da
Merge branch 'master' of https://github.com/dimagi/dimagi-data-platfo…
Nov 1, 2014
428302c
Scripts for data blog and Dag.
rdayalu Nov 5, 2014
c05122b
:wq
rdayalu Nov 5, 2014
ef106fa
mac test
oddmilk Nov 5, 2014
b2e9704
scripts to breakdown visit table by case type, and to compute WAR and…
oddmilk Nov 6, 2014
5177974
Merge branch 'mchen-analysis' of github.com:dimagi/dimagi-data-platfo…
oddmilk Nov 6, 2014
ae3b70c
updates script description
oddmilk Nov 6, 2014
2e72ede
removed old script
oddmilk Nov 6, 2014
b57bdd3
removed old script
oddmilk Nov 6, 2014
0260a18
updated case table utility func script
oddmilk Nov 6, 2014
5d1d665
updated description script
oddmilk Nov 6, 2014
24f0f38
removed old script
oddmilk Nov 6, 2014
aa76903
removed old script
oddmilk Nov 6, 2014
82bfc0e
a deeper look into inactive baby case
oddmilk Nov 6, 2014
9a63c6d
removed old script
oddmilk Nov 6, 2014
6e7d77c
removed old script
oddmilk Nov 6, 2014
2556b45
added funcs for case breakdown
oddmilk Nov 6, 2014
0efb6eb
updated 60-day activity to 120-day activity
oddmilk Nov 6, 2014
21685df
adding SMS device type to device types query, adding limit default va…
Nov 6, 2014
250d30d
move to folder analysis_scripts
oddmilk Nov 7, 2014
97a8d59
Minor indicator changes and data blog dataset creation.
rdayalu Nov 7, 2014
af2a77e
small changes to scripts to generate FU rate for baby case by time si…
oddmilk Nov 7, 2014
11657ec
cleaning up visit and interactions data sources and some interactions…
Nov 9, 2014
7b926f4
Merge pull request #15 from dimagi/mchen-analysis
mloudon Nov 9, 2014
77e9a4c
merge with changes to data sources
Nov 10, 2014
dd6b67b
Merge branch 'rdayalu-analysis'
Nov 10, 2014
59c496a
Merge branch 'master' of https://github.com/dimagi/dimagi-data-platfo…
Nov 10, 2014
3e76d1f
Removed some obsolete/irrelevant indicators.
rdayalu Nov 10, 2014
41c85b9
Merge pull request #18 from dimagi/rdayalu-analysis
mloudon Nov 11, 2014
7ce8bfe
repository cleanup, new aggregate table by domain, user, month, case_…
mloudon Nov 11, 2014
23377fe
Merge branch 'master' of github.com:mloudon/dimagi-data-platform-R
mloudon Nov 11, 2014
e45b60f
missing quote
Nov 11, 2014
753e998
updated followup_by_case_type script to use the interactions table da…
Nov 12, 2014
822d3e1
removing unused indicators
Nov 12, 2014
4e3e9c3
removing old misc folders, moved to analysis_scripts
Nov 12, 2014
cc9763a
Merge branch 'master' of https://github.com/dimagi/dimagi-data-platfo…
Nov 12, 2014
94c0185
removing unused batch entry indicators for now
Nov 12, 2014
f14b665
Blog dataset and some indicator changes
rdayalu Nov 13, 2014
fb02d26
Merge pull request #19 from dimagi/rdayalu-analysis
mloudon Nov 13, 2014
a96c4e6
updating queries for user model change
mloudon Nov 14, 2014
b74f100
db queries tested new user model
mloudon Nov 14, 2014
d60e3ec
Training set run
rdayalu Nov 17, 2014
d2c95db
Dag's vis2
rdayalu Nov 17, 2014
3054085
Merge pull request #20 from dimagi/user-model-refactor
mloudon Nov 17, 2014
c1a4b4f
small edits to written functions to compute FU rate
Nov 19, 2014
43fce55
this will be the main script file from now on. will clean up other sc…
Nov 19, 2014
7a40c28
updated domains to pull data from
Nov 19, 2014
f5c33d5
project space API data
mloudon Nov 19, 2014
5bb36fe
Merge pull request #21 from dimagi/project-space-api
mloudon Nov 19, 2014
15b6e6e
new project space API data tweaking, adding permitted_data_only flag …
Nov 20, 2014
9c6de51
adding function to get a list of the names of domains with can_use_da…
Nov 20, 2014
3ef6d27
separate checks for missing and true permitted_data_only
Nov 20, 2014
45031e5
Blog indicator evaluation
rdayalu Nov 20, 2014
91921df
salesforce contract table data source
Nov 20, 2014
fc6c443
salesforce contract table datasource
Nov 20, 2014
850e778
adding salesforce report
Nov 20, 2014
41bce4d
salesforce report with gratuitous bubble chart
Nov 20, 2014
da47ab7
:wq
rdayalu Nov 20, 2014
651e42e
get_domains_for_filter expects a list not a vector
Nov 21, 2014
edd5237
comments
Nov 21, 2014
8bc6300
:wq
rdayalu Nov 21, 2014
c9e04c7
add is_test back in
Nov 21, 2014
2f33c6d
:wqMerge branch 'master' of https://github.com/dimagi/dimagi-data-pla…
rdayalu Nov 21, 2014
e4db967
adding deactivated and deleted users to user types table
Nov 21, 2014
7825e75
can_use_data = True means opted out
Nov 22, 2014
f42eb45
device type trends blog posts with some interactive charts
Nov 23, 2014
0a6cf25
Checking Jeremy's code
rdayalu Nov 25, 2014
717d4a8
:wq
rdayalu Nov 25, 2014
e4252f5
application table, salesforce reportouts and impact123 case propertie…
Nov 29, 2014
479a961
device type % android by country
Nov 29, 2014
e946aae
adding data source for salesforce report outs
Nov 29, 2014
34675d3
update internal.can_use_data check - False now means not permitted
Dec 5, 2014
c40756d
Blog work
rdayalu Dec 5, 2014
ed0c493
blog post script updates
Dec 6, 2014
66c9abf
more smartphone blog calcs
Dec 6, 2014
7408e0c
formatting
Dec 7, 2014
91487e1
quick example function for post-processing on monthly table
Dec 7, 2014
0d5de28
device type trends blog
mloudon Dec 7, 2014
5aecf97
Blog visuals
rdayalu Dec 9, 2014
cb70863
Blog visuals
rdayalu Dec 9, 2014
d780c4a
More visuals
rdayalu Dec 9, 2014
30a1cfa
back to running off db
mloudon Dec 11, 2014
8b5f82f
Merge remote-tracking branch 'origin/master' into mchen-analysis
Dec 18, 2014
a8e1196
script generating static plots for blog#1 and blog#2
oddmilk Dec 18, 2014
42a1ca4
Commit any changes before I pull changes for my journal dataset.
rdayalu Dec 26, 2014
c74ec4b
:wq
rdayalu Dec 26, 2014
df1ec2e
comparison report
yedi Dec 31, 2014
dda1544
getting started with comparison report in rmarkdown
yedi Dec 31, 2014
df1bc8c
add some graphs to the output file
yedi Dec 31, 2014
b4bc6a7
add cash bracket charts; add more UI changes
yedi Dec 31, 2014
c6ab6c2
add some new indicators and some cosmetic changes
yedi Jan 2, 2015
923588c
Cleaning attrition report and preparing INC summit numbers.
rdayalu Jan 6, 2015
294a3a1
time_since_previous renamed to time_since_previous_hv, now only calcu…
Jan 6, 2015
5219465
removed old batch entry calcs - these should be done in indicator cod…
Jan 6, 2015
df47dbf
Attrition code, INC summit code, etc.
rdayalu Jan 9, 2015
7cb338a
HQ and DP alignment
rdayalu Jan 11, 2015
e0d80a1
Wrote new indicator functions for # travel visits and % batch entry a…
rdayalu Jan 11, 2015
520d115
Updated aggregate_tables.json to include batch indicators in monthly …
rdayalu Jan 12, 2015
e27b8e0
Merge pull request #23 from dimagi/rdayalu-analysis
mloudon Jan 12, 2015
65467a9
Merge pull request #22 from dimagi/mchen-analysis
mloudon Jan 12, 2015
8f0f051
some more changes to the comparison report
yedi Jan 12, 2015
97dd664
report out breakdown
yedi Jan 13, 2015
5666b71
INC summit analysis and changing active_days (old variable) to active…
rdayalu Jan 16, 2015
07b339a
Merge pull request #26 from dimagi/rdayalu-analysis
mloudon Jan 16, 2015
00c2252
Journal article work
rdayalu Jan 19, 2015
8a8efe2
Journal article scripts
rdayalu Jan 21, 2015
5d3ac03
Delete csv files
rdayalu Feb 2, 2015
de940b8
:wqMerge branch 'master' of https://github.com/dimagi/dimagi-data-pla…
rdayalu Feb 2, 2015
2da6c89
comparison report
yedi Feb 3, 2015
7d4fd3b
Merge branch 'master' of https://github.com/dimagi/dimagi-data-platfo…
yedi Feb 3, 2015
5cfd6f3
Merge branch 'master' into yedi-branch
yedi Feb 3, 2015
81c7863
stop building last two tables
yedi Feb 3, 2015
31d9b6a
Merge pull request #27 from dimagi/yedi-branch
mloudon Feb 3, 2015
dcc83e5
Merge pull request #28 from dimagi/remove-tables
yedi Feb 6, 2015
9ca4f9c
some quick changes to hopefully fix building the tables
yedi Feb 6, 2015
622a0d0
Google analytics analysis for WAR.
rdayalu Feb 10, 2015
dcd1851
fixing visit table time_since_previous_hv calc (trevl visit was switc…
Feb 14, 2015
183282e
Gates improvement code
rdayalu Feb 26, 2015
827eb52
HQ-DP reconciliation update
rdayalu Feb 28, 2015
a73f22d
removing indicators that can be computed from monthly table/post-proc…
Mar 17, 2015
02c3f56
removing extraneous indicator functions
Mar 17, 2015
bc00fc8
removing some more extraneous indicator functions
Mar 18, 2015
f401c6e
wam script
rdayalu Mar 18, 2015
2faa9c6
create function for adding a more useful business_unit column
yedi Mar 26, 2015
ae1398b
Merge pull request #31 from dimagi/add-nbu
yedi Mar 26, 2015
e3b9717
make some changes to comparison report to support new nforms indicator
yedi Mar 26, 2015
004fca0
WAM analysis
rdayalu Mar 31, 2015
76a863d
:wq
rdayalu Mar 31, 2015
53c68ef
create better country variable
yedi Apr 2, 2015
2fcea21
Merge pull request #33 from dimagi/add-nbu
yedi Apr 2, 2015
7206702
Remove csv files
rdayalu Apr 2, 2015
11ef0d2
Merge pull request #32 from dimagi/rdayalu-analysis
yedi Apr 2, 2015
02de8b6
scripts cleanup
Apr 3, 2015
b2407d8
modify time_using_cc indicator
yedi Apr 15, 2015
d6dd852
distribution blog visuals
Apr 17, 2015
9b9cdf5
convert certain indicators to numeric
yedi Apr 20, 2015
7d1c5be
small changes to the comparison report
yedi May 9, 2015
c3cd4a7
modify visit indicators
yedi May 9, 2015
bf6e55f
Merge branch 'indicators'
yedi May 9, 2015
f029219
fully quality jsonlite fromJSON calls
yedi Jun 18, 2015
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 35 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,28 @@

This repository has two main components:

1. Indicator framework for quickly generating aggregate indicators.
2. Reporting framework for generating reports from those indicators.
1. Aggregate table framework for generating aggregate tables.
2. Reporting framework for generating reports from those aggregate tables.

## Indicator framework
## Aggregate table framework

To build the monthly and lifetime indicator tables issue the following
command:
To build the aggregate tables issue the following
commands:

make indicators
make clean
make aggregate_tables

This calls [indicators.R](indicators.R), which creates
tables described in [indicators.json](indicators.json)
and [indicator_functions.R](indicator_functions.R).
Alternatively, make debug can be used to build aggregate tables from a subset of rows from each data source. This is useful for data sources that involve long-running queries. Specify debug mode as follows:

make clean
make debug

Both forms call [aggregate_tables.R](aggregate_tables.R), which creates
tables described in [aggregate_tables.json](aggregate_tables.json)
using the indicator calculation functions in [indicator_functions.R](indicator_functions.R).

How does one add an indicator?
[indicators.json](indicators.json) contains a list of
[aggregate_tables.json](aggregate_tables.json) contains a list of
tables to be created. Each element in the list is a dictionary with
four pairs:

Expand All @@ -28,31 +34,26 @@ four pairs:
4. A list of components that will be merged together to build the
final table.

Each component has three key-value pairs:
Each component has two key-value pairs:

1. The name of the database where the data for this component is
pulled.
2. The name of the table where the data for this component is pulled.
3. The columns to be created.
1. The name of the table where the data for this component is pulled.
2. The columns to be created.

Here is an example configuration:

[
{
"database": "dimagi_data_platform",
"table": "monthly",
"table": "aggregate_monthly_interactions",
"by": ["domain", "user_id", "month.index"],
"components": [
{
"database": "dimagi_data_platform",
"table": "interactions",
"columns": {
"column1": "date_first_visit",
"column2": "date_last_visit"
}
},
{
"database": "dimagi_data_platform",
"table": "device_logs",
"columns": {
"column3": "nrow"
Expand All @@ -62,12 +63,11 @@ Here is an example configuration:
}
]

This will create a new table called `monthly` in the
`dimagi_data_platform` with three columns. `column1` will be the date
of the first visit a user performed in the month. `column2` will be
the date of the last visit a user performed in the month. `column3`
will count the number of device logs recorded in a month for a given
user. Notice that the key for each column is the name of the column
This will create a new table called `aggregate_monthly_interactions` with three columns.
`column1` will be the date of the first visit a user performed in the month.
`column2` will be the date of the last visit a user performed in the month.
`column3` will count the number of device logs recorded in a month for a given user.
Notice that the key for each column is the name of the column
where that indicator will be stored, the value for each column is the
R function to be called on each block of data. To modularize the code
a bit, we have moved custom indicator functions into
Expand All @@ -78,9 +78,18 @@ the definition of `date_first_visit`:

This function takes a data.frame `x` and returns the minimum value of
the `visit_date` column of `x`. So, adding an indicator always
requires modifying [indicators.json](indicators.json)
requires modifying [aggregate_tables.json](aggregate_tables.json)
and if the necessary R function to calculate the indicator does not
exist then it must be added to
[indicator_functions.R](indicator_functions.R).

## Reporting framework
Report modules produce one or more PDF reports. Report modules for a run are specified in config_run.json, along with options like split-bys and report dates.

test_report.R is an example report module.

The script reports.R reads the config file, sets up variables (including filtering domains and returning a list of domains to include in the report run) and runs the report modules specified in the config. Each report module should return a list of file names (full paths) specifying the individual pdfs it has written to tmp_pdf_report_dir. Once all report modules have run, these are collated into a single pdf in reports.R, using http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/.

Report modules should provide a render function that returns a list of pdf files (full paths) generated in the report module. The render function should be defined as follows:

render <- function (db,domains_for_run,report_options,tmp_report_pdf_dir)
14 changes: 8 additions & 6 deletions aggregate_tables.R
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,28 @@ drop_tables <- function(file) {

write_tables <- function(file, debug) {
config <- fromJSON(file=file)

db <- get_db_connection()
for (table.info in config) {
print(paste('Writing', table.info$table, 'indicator table.'))
df <- compute_indicators(table.info, debug)
db <- get_db_connection()
print(paste('Computing indicators for ', table.info$table, 'indicator table.'))
df <- compute_indicators(table.info, db, debug)
print(paste('Writing ', table.info$table, 'indicator table.'))
dbRemoveTable(db$con, name=table.info$table)
copy_to(db, df=df, name=table.info$table, temporary=FALSE)
}
}

compute_indicators <- function(info, debug) {
compute_indicators <- function(info, db, debug) {
debug <- as.logical(debug)
if (debug == T) {limit = 5000} else {limit = -1}
dfs <- lapply(info$components, function(component) {
db <- get_db_connection()
print(paste('Getting data source ', component$table))
source.data <- get_data_source(db, component$table, limit)
group.by.str <- paste(info$by, collapse=', ')
print(paste('Grouping and aggregating', component$table))
df <- source.data %.% s_group_by(group.by.str) %.% aggregate(component$columns)
return(df)
})
print('merging...')
merged <- Reduce(function(...) merge(..., all.x=TRUE, all.y=TRUE, by=info$by), dfs)
return(merged)
}
Expand Down
92 changes: 61 additions & 31 deletions aggregate_tables.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,41 +3,58 @@
"table":"aggregate_lifetime_interactions",
"by":[
"domain",
"user_id"
"user_id",
"user_pk"
],
"components":[
{
"table":"interactions",
"table":"visit_detail",
"columns":{
"date_first_visit":"date_first_visit",
"date_last_visit":"date_last_visit",
"nvisits":"nvisits",
"days_on_cc":"days_on_cc",
"days_visit_last":"days_visit_last",
"active_user":"active_user",
"calendar_month_on_cc":"calendar_month_on_cc",
"active_months":"active_months",
"active_month_percent":"active_month_percent",
"active_days":"active_days",
"active_day_percent":"active_day_percent",
"nforms":"nforms",
"median_visit_duration":"median_visit_duration",
"median_visits_per_day":"median_visits_per_day",
"median_visits_per_month":"median_visits_per_month",
"median_time_elapsed_btw_visits":"median_time_elapsed_btw_visits",
"batch_entry_visit":"batch_entry_visit",
"batch_entry_percent":"batch_entry_percent",
"ncases_registered":"ncases_registered",
"register_followup":"register_followup",
"case_register_followup_rate":"case_register_followup_rate",
"morning":"morning",
"afternoon":"afternoon",
"evening":"evening",
"night":"night",
"after_midnight":"after_midnight",
"ncases_opened":"ncases_opened",
"time_using_cc":"time_using_cc",
"nvisits_travel":"nvisits_travel",
"nvisits_travel_batch":"nvisits_travel_batch"
}
},
{
"table":"interactions",
"columns":{
"ninteractions":"ninteractions",
"ncases_registered":"ncases_registered",
"register_followup":"register_followup",
"case_register_followup_rate":"case_register_followup_rate",
"ncases_touched":"ncases_touched",
"nunique_followups":"nunique_followups"
}
},
{
"table":"device_type",
"columns":{
"summary_device_type":"summary_device_type",
"nforms": "nforms",
"active_days":"active_days",
"active_months":"active_months"

}
},
{
"table":"device_log_types_by_user",
"columns":{
"total_logs":"total_logs",
"audio_plays":"audio_plays",
"network_warnings":"network_warnings"
}
}
]
},
Expand All @@ -46,40 +63,53 @@
"by":[
"domain",
"user_id",
"user_pk",
"month.index"
],
"components":[
{
"table":"interactions",
"table":"visit_detail",
"columns":{
"date_first_visit":"date_first_visit",
"date_last_visit":"date_last_visit",
"nvisits":"nvisits",
"days_on_cc":"days_on_cc",
"active_days":"active_days",
"active_day_percent":"active_day_percent",
"nforms":"nforms",
"median_visit_duration":"median_visit_duration",
"median_visits_per_day":"median_visits_per_day",
"median_time_elapsed_btw_visits":"median_time_elapsed_btw_visits",
"batch_entry_visit":"batch_entry_visit",
"batch_entry_percent":"batch_entry_percent",
"ncases_registered":"ncases_registered",
"register_followup":"register_followup",
"case_register_followup_rate":"case_register_followup_rate",
"morning":"morning",
"afternoon":"afternoon",
"evening":"evening",
"night":"night",
"after_midnight":"after_midnight",
"ncases_opened":"ncases_opened",
"numeric_index":"numeric_index",
"time_using_cc":"time_using_cc",
"nvisits_travel":"nvisits_travel",
"nvisits_travel_batch":"nvisits_travel_batch"
}
},
{
"table":"interactions",
"columns":{
"ninteractions":"ninteractions",
"ncases_registered":"ncases_registered",
"register_followup":"register_followup",
"case_register_followup_rate":"case_register_followup_rate",
"ncases_touched":"ncases_touched",
"nunique_followups":"nunique_followups"
}
},
{
"table":"device_type",
"columns":{
"summary_device_type":"summary_device_type"
"summary_device_type":"summary_device_type",
"nforms": "nforms",
"active_days":"active_days"
}
},
{
"table":"device_log_types_by_user",
"columns":{
"total_logs":"total_logs",
"audio_plays":"audio_plays",
"network_warnings":"network_warnings"
}
}
]
Expand Down
Loading