documentation:software:whiterabbit
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| documentation:software:whiterabbit [2014/12/03 20:22] – ericavoss | documentation:software:whiterabbit [2020/02/18 14:12] (current) – maximmoinat | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== WhiteRabbit ====== | ====== WhiteRabbit ====== | ||
| + | |||
| + | **NOTICE FEB 2020:** the current documentation can be found on Github | ||
| + | http:// | ||
| + | |||
| + | |||
| {{ : | {{ : | ||
| Line 8: | Line 13: | ||
| WhiteRabbit is a software tool to help prepare for ETLs (Extraction, | WhiteRabbit is a software tool to help prepare for ETLs (Extraction, | ||
| - | longitudinal healthcare databases into the Observational Medical Outcomes Partnership | + | longitudinal healthcare databases into the [[documentation: |
| - | (OMOP) Common Data Model (CDM) ([[http:// | + | comma-separated text files, or in a database (MySQL, SQL Server, |
| - | comma-separated text files, or in a database (MySQL, SQL Server, | + | |
| - | CDM will be in a database (MySQL, | + | |
| - | with Teradata. | + | |
| WhiteRabbit’s main function is to perform a scan of the source data, providing detailed | WhiteRabbit’s main function is to perform a scan of the source data, providing detailed | ||
| information on the tables, fields, and values that appear in a field. This scan will generate a | information on the tables, fields, and values that appear in a field. This scan will generate a | ||
| - | report that can be used as a reference when designing the ETL, for instance by using the RabbitIn-a-Hat | + | report that can be used as a reference when designing the ETL, for instance by using the Rabbit-In-a-Hat |
| tool. White Rabbit differs from standard data profiling tools in that it attempts to | tool. White Rabbit differs from standard data profiling tools in that it attempts to | ||
| prevent the display of personally identifiable information (PII) data values in the generated | prevent the display of personally identifiable information (PII) data values in the generated | ||
| Line 35: | Line 37: | ||
| ===== Installation and support ===== | ===== Installation and support ===== | ||
| - | All source code and installation instructions available on Github: https:// | + | All source code and installation instructions available on GitHub: https:// |
| - | Any bugs/ | + | Any bugs/ |
| - | Any questions/ | + | Any questions/ |
| - | ===== Application-specific sections about using the application functions | + | ===== Using the Application Functions |
| ==== Specifying the Location of Data ==== | ==== Specifying the Location of Data ==== | ||
| Line 55: | Line 57: | ||
| Here you can specify the location of the source data. The following source types are supported: | Here you can specify the location of the source data. The following source types are supported: | ||
| - | delimited text files, MySQL, Oracle, SQL Server, | + | delimited text files, MySQL, Oracle, SQL Server, PostgreSQL, and Google BigQuery. Below are connection |
| instructions for each data type of data source. Once you have entered the necessary | instructions for each data type of data source. Once you have entered the necessary | ||
| information, | information, | ||
| - | **Delimited text files** | + | **Delimited text files** |
| * **// | * **// | ||
| Line 66: | Line 68: | ||
| **MySQL** | **MySQL** | ||
| - | * //**Server location: | + | * //**Server location: |
| * //**User name:**// name of the user used to log into the server | * //**User name:**// name of the user used to log into the server | ||
| * // | * // | ||
| Line 78: | Line 80: | ||
| **SQL Server** | **SQL Server** | ||
| - | * //**Server location: | + | * //**Server location: |
| * //**User name:**// name of the user used to log into the server. Optionally, the domain can be specified as < | * //**User name:**// name of the user used to log into the server. Optionally, the domain can be specified as < | ||
| * // | * // | ||
| Line 86: | Line 88: | ||
| - Download the .exe from http:// | - Download the .exe from http:// | ||
| - Run it, thereby extracting its contents to a folder. | - Run it, thereby extracting its contents to a folder. | ||
| - | - In the extracted folder you will find the file sqljdbc_4.0/ | + | - In the extracted folder you will find the file //sqljdbc_4.0/ |
| + | |||
| + | **MS APS** | ||
| + | |||
| + | At this time WhiteRabbit does not run on this platform. | ||
| **PostgreSQL** | **PostgreSQL** | ||
| + | |||
| * //**Server location: | * //**Server location: | ||
| * //**User name:**// name of the user used to log into the server | * //**User name:**// name of the user used to log into the server | ||
| * // | * // | ||
| - | * // | + | * // |
| + | |||
| + | **Google BigQuery** | ||
| + | |||
| + | Google BigQuery (GBQ) supports two different connection/ | ||
| + | |||
| + | |||
| + | Authentication via application default credentials: | ||
| + | |||
| + | When using application default credentials authentication, | ||
| + | |||
| + | * //**Server location: | ||
| + | * //**User name:**// not used | ||
| + | * // | ||
| + | * // | ||
| + | |||
| + | Authentication via service account credentials: | ||
| + | * //**Server location: | ||
| + | * //**User name:**// OAuth service account email address | ||
| + | * // | ||
| + | * // | ||
| ==== Scanning a Database ==== | ==== Scanning a Database ==== | ||
| Line 110: | Line 138: | ||
| Once all settings are completed, press the “Scan tables” button. After the scan is completed the report will be written to the working folder. | Once all settings are completed, press the “Scan tables” button. After the scan is completed the report will be written to the working folder. | ||
| + | |||
| + | === Running from the command line === | ||
| + | |||
| + | For various reasons one could prefer to run WhiteRabbit from the command line. This is possible by specifying all the options one would normally select in the user interface in an .ini file. An example ini file can be found [[https:// | ||
| + | |||
| + | java -jar WhiteRabbit.jar -ini WhiteRabbit.ini | ||
| === Reading the Scan === | === Reading the Scan === | ||
| - | After the scan is completed, a “ScanReport” Excel document will be created in the working folder location selected earlier. The document will have multiple tabs, one as an “Overview” and then one tab for each database table or delimited text files selected for the scan. The “Overview” tab will tell you about each table selected, what the columns in each table are, the data type of the columns, the amount of data within the table, the number of rows scanned, and the fraction of data empty. Below is an example image of the “Overview” tab. Column A will list what table the information is about, Column B the column being reviewed, Column C, the type of the column, Column E is the number of rows (however with text files it will return - 1), Column F will tell you how many rows of the N rows were reviewed, and Column G will let you know how many rows are empty. | + | After the scan is completed, a “ScanReport” Excel document will be created in the working folder location selected earlier. The document will have multiple tabs, one as an “Overview” and then one tab for each database table or delimited text files selected for the scan. The “Overview” tab will tell you about each table selected, what the columns in each table are, the data type of the columns, the amount of data within the table, the number of rows scanned, and the fraction of data empty. Below is an example image of the “Overview” tab. Column A will list what table the information is about, Column B the column being reviewed, Column C, the type of the column, Column E is the number of rows (however with text files it will return - 1), Column F will tell you how many rows of the N rows were reviewed, and Column G will let you know how many rows are empty. |
| {{ : | {{ : | ||
| - | For a tab that describes a single table, the columns names from the source table (or delimited text file) will be across the columns of the Excel tab. Each source table column will generate two columns in the Excel. One column will list all distinct values that have a “Min cell count” greater than what was set at time of the scan (Section | + | For a tab that describes a single table, the columns names from the source table (or delimited text file) will be across the columns of the Excel tab. Each source table column will generate two columns in the Excel. One column will list all distinct values that have a “Min cell count” greater than what was set at time of the scan (Section |
| {{ : | {{ : | ||
| Line 163: | Line 197: | ||
| To open an existing Rabbit-In-a-Hat document use //File --> Open ETL specs//. | To open an existing Rabbit-In-a-Hat document use //File --> Open ETL specs//. | ||
| + | |||
| + | |||
| + | ==== Selecting Desired CDM Version ==== | ||
| + | |||
| + | Rabbit-In-a-Hat allows you to select which CDM version (v4 or v5) you'd like to built your ETL specification against. | ||
| + | |||
| + | See the graphic below for how to select your desired CDM: | ||
| + | {{http:// | ||
| + | |||
| + | |||
| + | The CDM version can be changed at any time, but beware that some of your existing mappings may be lost in the process. | ||
| + | |||
| + | For instance, switching from CDMv4 to CDMv5, a mapping from source to CDM person.person_source_value will be kept because the person table has person_source_value in both CDMv4 and CDMv5. | ||
| + | |||
| + | ==== Loading in a Custom CDM ==== | ||
| + | |||
| + | There are times when users might need to load in a customized version of the CDM, for instance if they are sandboxing new features. | ||
| + | |||
| + | Once you have created the CSV file, load it into RiaH as shown below: | ||
| + | {{http:// | ||
| + | |||
| + | Please note that the name of the file you load in becomes the label that appears above the target tables, so "My Super File.csv" | ||
| ===== Connecting Source Tables to CDM Tables ===== | ===== Connecting Source Tables to CDM Tables ===== | ||
| Line 184: | Line 240: | ||
| ===== Connecting Source Fields to CDM Fields ===== | ===== Connecting Source Fields to CDM Fields ===== | ||
| - | By double clicking on an arrow connecting a source and CDM table, it will open a //Fields// pane below the arrow selected. The //Fields// pane will have all the source table and CDM fields and is meant to make the specific column mappings between tables. Hovering over a source table will generate an arrow head that can then be selected and dragged to its corresponding CDM field. For example, in the // | + | By double clicking on an arrow connecting a source and CDM table, it will open a //Fields// pane below the arrow selected. The //Fields// pane will have all the source table and CDM fields and is meant to make the specific column mappings between tables. Hovering over a source table will generate an arrow head that can then be selected and dragged to its corresponding CDM field. For example, in the // |
| {{ : | {{ : | ||
| - | If you select the source table orange box, Rabbit-In-a-Hat will expose values the source data has for that table. This is meant to help in the process in understanding the source data and what logic may be required to handle the data in the ETL. In the example below //ndcnum// is selected and raw NDC codes are displayed starting with most frequent (note that in the WhiteRabbit scan a “Min cell count” could have been selected and values below that frequency will not show). | + | If you select the source table orange box, Rabbit-In-a-Hat will expose values the source data has for that table. This is meant to help in the process in understanding the source data and what logic may be required to handle the data in the ETL. In the example below //ndcnum// is selected and raw NDC codes are displayed starting with most frequent (note that in the WhiteRabbit scan a “Min cell count” could have been selected and values below that frequency will not show). |
| {{ : | {{ : | ||
| Line 196: | Line 252: | ||
| ===== Generating an ETL Document ===== | ===== Generating an ETL Document ===== | ||
| - | To generate an ETL MS Word document use //File --> Generate ETL// document and select a location to save. It may take a moment before the document is finished creating. This document will contain all notes from Rabbit-In-a-Hat. | + | To generate an ETL MS Word document use //File --> Generate ETL// document and select a location to save. It may take a moment before the document is finished creating. This document will contain all notes from Rabbit-In-a-Hat. |
| Once the information is in the document, if an update is needed you must either update the information in Rabbit-In-a-Hat and regenerate the document or update the document. If you make changes in the document, Rabbit-In-a-Hat will not read those changes and update the information in the tool. However it is common to generate the document with the core mapping information and fill in more detail within the document. | Once the information is in the document, if an update is needed you must either update the information in Rabbit-In-a-Hat and regenerate the document or update the document. If you make changes in the document, Rabbit-In-a-Hat will not read those changes and update the information in the tool. However it is common to generate the document with the core mapping information and fill in more detail within the document. | ||
| Once the document is completed, this should be shared with the individuals who plan to implement the code to execute the ETL. | Once the document is completed, this should be shared with the individuals who plan to implement the code to execute the ETL. | ||
| + | |||
| + | ===== Generating a testing framework ===== | ||
| + | |||
| + | To make sure the ETL process is working as specified, it is highly recommended to create [[https:// | ||
| ====== Best Practices ====== | ====== Best Practices ====== | ||
| Line 206: | Line 266: | ||
| The following lists best practices in using WhiteRabbit and Rabbit-In-a-Hat to manage your ETL documentation process: | The following lists best practices in using WhiteRabbit and Rabbit-In-a-Hat to manage your ETL documentation process: | ||
| * **Overall Process:** | * **Overall Process:** | ||
| - | * When going through the ETL exercise, it is critical to get all key stakeholders in the room such as the data owners and individuals who plan to perform/ | + | * When going through the ETL exercise, it is critical to get all key stakeholders in the room such as the data owners and individuals who plan to perform/ |
| * **WhiteRabbit: | * **WhiteRabbit: | ||
| - | * If it is known some tables will not be needed from the source data, do not include them in the scan. If there is a question to if the table is necessary it is better to include it. | + | * If it is known some tables will not be needed from the source data, do not include them in the scan. If there is a question to if the table is necessary it is better to include it. |
| * **Rabbit-In-a-Hat: | * **Rabbit-In-a-Hat: | ||
| * Start with mapping tables to tables and then dive into how one table’s fields map into CDM fields. In other words, stay at the table level until all tables a mapped, and then start to map fields. | * Start with mapping tables to tables and then dive into how one table’s fields map into CDM fields. In other words, stay at the table level until all tables a mapped, and then start to map fields. | ||
| * If your source data does not contain certain information you do not need to impute or generate information to fulfil a CDM requirement. For example, if your source data does not contain an end date for when a medication was stopped you do not need to population the DRUG_EXPOSURE.DRUG_EXPOSURE_START_DATE column. | * If your source data does not contain certain information you do not need to impute or generate information to fulfil a CDM requirement. For example, if your source data does not contain an end date for when a medication was stopped you do not need to population the DRUG_EXPOSURE.DRUG_EXPOSURE_START_DATE column. | ||
| * Derived CDM tables, like DRUG_ERA, typically will not receive a mapping from the source data because they are generated off the CDM table (in this case DRUG_ERA is generated off DRUG_EXPOSURE). | * Derived CDM tables, like DRUG_ERA, typically will not receive a mapping from the source data because they are generated off the CDM table (in this case DRUG_ERA is generated off DRUG_EXPOSURE). | ||
| + | |||
documentation/software/whiterabbit.1417638159.txt.gz · Last modified: by ericavoss
