{"id":14936,"date":"2021-09-20T15:44:21","date_gmt":"2021-09-20T19:44:21","guid":{"rendered":"http:\/\/www.iri.com\/blog\/?p=14936"},"modified":"2024-01-05T11:29:03","modified_gmt":"2024-01-05T16:29:03","slug":"multi-format-test-data","status":"publish","type":"post","link":"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/","title":{"rendered":"Creating CSV, JSON, XML and RDB Test Data"},"content":{"rendered":"<p>This article demonstrates how to synthesize and write data to CSV, JSON, and XML files, plus an Oracle table all at once via the <a href=\"https:\/\/www.iri.com\/products\/rowgen\">IRI RowGen<\/a> <i>New Test Data Job<\/i> wizard in <a href=\"https:\/\/www.iri.com\/products\/workbench\/rowgen-gui\">IRI Workbench<\/a>. If you are interested in synthesizing and populating an entire RDB schema with referential integrity however, see <a href=\"https:\/\/www.iri.com\/blog\/vldb-operations\/how-to-generate-db-test-data-2\/\">this article<\/a>.<\/p>\n<p>The IRI Workbench screenshot below displays the RowGen script produced by the wizard along with its transform mapping diagram, plus the target test data written by the RowGen job into an Oracle table.<\/p>\n<p><a href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-collage.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14942 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-collage-1024x566.png\" alt=\"\" width=\"649\" height=\"359\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-collage-1024x566.png 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-collage-300x166.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-collage-768x425.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-collage.png 1920w\" sizes=\"(max-width: 649px) 100vw, 649px\" \/><\/a><\/p>\n<h6><b>Data Preparation<\/b><\/h6>\n<p>RowGen users can synthesize test data in multiple ways:<\/p>\n<ol>\n<li aria-level=\"1\">Random generation of characters and digits by data type and length (with allowances for frequency distribution)<\/li>\n<li aria-level=\"1\">Random selection of real or generated values from external <a href=\"https:\/\/www.iri.com\/blog\/test-data\/all-about-iri-set-files-a-primer\/\">set files<\/a>, or from values in database (<a href=\"https:\/\/www.iri.com\/blog\/vldb-operations\/table-lookups-sortcl-compatible-jobs\/\">lookup<\/a>) tables<\/li>\n<li aria-level=\"1\">Custom string\/format definition and random generation of the component values<\/li>\n<li aria-level=\"1\">Random generation of computationally valid or invalid values of known string types like credit cards (CCN), dates, national ID (e.g., social security) numbers, etc.<\/li>\n<li aria-level=\"1\">Subsetting and masking of data in existing production files or related database tables<\/li>\n<\/ol>\n<p>Set files are text files composed of one or more tab-separated columns or ranges.\u00a0 They can be created from a number of different sources, using a number of techniques.<\/p>\n<p>For example, they can be created with a text editor, with an IRI job or wizard that extracts column values from files or wizards, SQL commands, etc. In addition, many sample set files are also included in the base RowGen (CoSort) package found under the $COSORT_HOME folder.<\/p>\n<p>In this demonstration, I will be using several set files from the IRI-provided folder, including<i> names_last.set<\/i>, <i>street_addresses.set<\/i>, and <i>state_city.se<\/i>t. I will also use random value generation, and the <a href=\"https:\/\/www.iri.com\/blog\/iri\/iri-workbench\/data-generation-rules-workbench\/\"><i>Data Generation Rule<\/i><\/a> wizard to synthesize \u201cvalid\u201d CCN and NID values.<\/p>\n<h6><b>Start the Job<\/b><\/h6>\n<p>From the top toolbar menu, select the <i>New Test Data Job<\/i> wizard from the RowGen menu. Enter a filename (RowGen jobs are created with .rcl extension).<\/p>\n<p>Select the <b>Create Script<\/b> radio button and click <b>Next<\/b>:<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2021\/09\/rowgen-job-specification-file.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14943 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/rowgen-job-specification-file.png\" alt=\"\" width=\"449\" height=\"530\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/rowgen-job-specification-file.png 516w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/rowgen-job-specification-file-254x300.png 254w\" sizes=\"(max-width: 449px) 100vw, 449px\" \/><\/a><\/p>\n<h6><b>Define the Test Fields to Generate<\/b><\/h6>\n<p>By default, RowGen will generate random values for the data type specified for each field (the default is ALPHA_DIGIT). However, the data types and lengths can be changed. Here I have used ASCII and ISO_TIMESTAMP data types as well.<\/p>\n<p>Next on the Data Sources page, you will see for Infile only \u201crandom_place_holder\u201d to indicate dummy data is being produced (vs. reading from a production source). The Incollection option refers to the number of records\/rows you want to generate in this phase (the default is 100).<\/p>\n<p>Then click on <b>Source Field Layout <\/b>where a data layout screen is provided for each named test field you will generate.<\/p>\n<ol>\n<li aria-level=\"1\">Click on the <b>F<\/b> icon to add a field<\/li>\n<li aria-level=\"1\">Double-click on the field to open the Field Layout Editor to handle attributes like the field name, data type, position and, if desired, a rule like a set file value lookup.<\/li>\n<\/ol>\n<p>The screenshots below display the process of creating a field that will get values from a set file.<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-data-sources.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14944 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-data-sources.png\" alt=\"\" width=\"549\" height=\"453\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-data-sources.png 739w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-data-sources-300x248.png 300w\" sizes=\"(max-width: 549px) 100vw, 549px\" \/><\/a><\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-generation-field.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14945 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-generation-field.png\" alt=\"\" width=\"550\" height=\"695\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-generation-field.png 614w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-generation-field-237x300.png 237w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-generation-field-data-sources-e1632165820521.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14946 aligncenter\" src=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-generation-field-data-sources-e1632165820521.png\" alt=\"\" width=\"551\" height=\"378\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-generation-field-data-sources-e1632165820521.png 738w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-generation-field-data-sources-e1632165820521-300x206.png 300w\" sizes=\"(max-width: 551px) 100vw, 551px\" \/><\/a><\/p>\n<h6><b>Adding Rules to Create Credit Card and Social Security Numbers<\/b><\/h6>\n<p>To add a rule, right click on the field in the Target Field Layout editor to bring up the context menu. Then, select the menu item <b>Add Rule<\/b>. Select the<b> Create Rule<\/b> sub item to define a new rule, or select <b>Browse Rule<\/b> to re-use a previously-defined rule.<\/p>\n<p>Choosing to create a new rule will open the New Rule wizard. To generate credit card numbers, select <b>Credit Card Number Generator<\/b> under Generation Rules. There are two options to generate credit cards. In this instance, the second option was selected that allows the credit card type and separator to be specified.<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-new-field-rule-credit-card.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14948 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-new-field-rule-credit-card.png\" alt=\"\" width=\"549\" height=\"501\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-new-field-rule-credit-card.png 749w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-new-field-rule-credit-card-300x274.png 300w\" sizes=\"(max-width: 549px) 100vw, 549px\" \/><\/a><\/p>\n<p>A Social Security (or similar) number rule can be created from the list of <i>National ID Functions<\/i>.<\/p>\n<p>The image below displays the final field layout.<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-test-data-definition.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-14949 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-test-data-definition.png\" alt=\"\" width=\"515\" height=\"613\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-test-data-definition.png 515w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-test-data-definition-252x300.png 252w\" sizes=\"(max-width: 515px) 100vw, 515px\" \/><\/a><\/p>\n<p>Next, we will use the Data Targets dialog to define the output files and their layout(s). Note that because RowGen uses the same SortCL metadata and executable as CoSort, NextForm, FieldShield, and Voracity, it is also possible to reformat and transform the generated data in the target phase.<\/p>\n<h6><b>Define the Targets<\/b><\/h6>\n<p>Click <b>Next <\/b>at the bottom of the Test Data Definition dialog to begin specifying the data targets and their field layouts.<\/p>\n<p>The first output file will be in CSV format. In this case, I named the target <i>report.csv<\/i> and assigned the process type (file format) to be CSV:<\/p>\n<p><a href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-data-target-csv-e1632165949141.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14951 size-full aligncenter\" src=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-data-target-csv-e1632165949141.png\" alt=\"\" width=\"510\" height=\"275\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-data-target-csv-e1632165949141.png 510w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-data-target-csv-e1632165949141-300x162.png 300w\" sizes=\"(max-width: 510px) 100vw, 510px\" \/><\/a><\/p>\n<p>Clicking <b>OK <\/b>displays the generated fields mapped by default into a target tab with my file name. In the Target Field Layout Editor dialog shown below, you can add rules to each field, and a new locator (field name) assignment specific to the format (in this case CDEF for CSV):<\/p>\n<p>Format specific location definitions can be important when the location of that field in the target needs to have another name, case, or even formatting syntax, like an XML path structure. Localized fields may also be incompatible with IRI \/FIELD naming conventions, too.<\/p>\n<p>When you click on the DEF icon in the target, you will see an Add Location Definition page. In its drop-down menu shown below, you can add DEFs for CSV files (CDEF), JSON (JDEF), XML (XDEF), and ODBC (ODEF) for SQL-compatible RDB column names. There is also support for LDIF (LDEF) file, MongoDB (MDEF) document, and Excel (SDEF) spreadsheet locators, too.<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-add-location-definition.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14952 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-add-location-definition.png\" alt=\"\" width=\"549\" height=\"635\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-add-location-definition.png 661w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-add-location-definition-260x300.png 260w\" sizes=\"(max-width: 549px) 100vw, 549px\" \/><\/a><\/p>\n<p>Below is a screenshot of the CSV output file produced by this part of the RowGen job:<\/p>\n<p><a href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-csv-output-e1632166006963.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14956 aligncenter\" src=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-csv-output-e1632166006963-1024x808.png\" alt=\"\" width=\"550\" height=\"434\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-csv-output-e1632166006963-1024x808.png 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-csv-output-e1632166006963-300x237.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-csv-output-e1632166006963-768x606.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-csv-output-e1632166006963.png 1363w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/a><\/p>\n<h6><b>Creating JSON output<\/b><\/h6>\n<p>The next target from the same generation job will be a JSON file containing my test data. In this screen I specify the format as JSON and name the file:<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-data-target-json.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14954 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-data-target-json.png\" alt=\"\" width=\"549\" height=\"406\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-data-target-json.png 743w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-data-target-json-300x222.png 300w\" sizes=\"(max-width: 549px) 100vw, 549px\" \/><\/a><\/p>\n<p>I was also able to automate the generation of optional JDEF locators in the specs. The screenshot below show the script, mapping diagram and both the CSV and JSON test files produced by the job:<\/p>\n<p><a href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-csv-json-output.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14955 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-csv-json-output-1024x576.png\" alt=\"\" width=\"650\" height=\"366\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-csv-json-output-1024x576.png 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-csv-json-output-300x169.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-csv-json-output-768x432.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-csv-json-output.png 1920w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><strong>Follow along with our YouTube video creating a JSON file!<\/strong><\/p>\n<p><iframe loading=\"lazy\" title=\"Creating JSON Files Using IRI&#039;s RowGen\" width=\"1140\" height=\"641\" src=\"https:\/\/www.youtube.com\/embed\/8uNq_HewRWQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe><\/p>\n<h6><b>Creating XML Output<\/b><\/h6>\n<p>XML (and other targets) can similarly be defined. The screenshot below shows the XML test file target on the right:<\/p>\n<p><a href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-xml-output.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14957 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-xml-output-1024x577.png\" alt=\"\" width=\"651\" height=\"367\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-xml-output-1024x577.png 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-xml-output-300x169.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-xml-output-768x432.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-xml-output.png 1918w\" sizes=\"(max-width: 651px) 100vw, 651px\" \/><\/a><\/p>\n<h6><b>RDB Target Table<\/b><\/h6>\n<p>In the same way I generated flat files in various formats, I can also write generated test values into an empty (or append to an existing) RDB table. I can do this from the initial job wizard by adding another data target, or after the fact in this case from the prior script by adding to it.<\/p>\n<p>To add another target file to the same job, open the context menu from within the script editor. Right click to expose the menu and select <b>IRI &gt; Edit Targets &gt; Add Target<\/b>. Follow the same type of steps described previously; i.e., specify the format (ODBC this time) and the table detail.<\/p>\n<p><a href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-rdb-table-output.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14958 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-rdb-table-output-1024x586.png\" alt=\"\" width=\"650\" height=\"372\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-rdb-table-output-1024x586.png 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-rdb-table-output-300x172.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-rdb-table-output-768x440.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-rdb-table-output.png 1863w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/a><\/p>\n<p>In this particular example, I am selecting from a list of connected and registered DB connections (e.g., \u201cOverflowCoSort\u201d) and an existing table called REPORT, which I created separately in the COSORT schema using the <a href=\"https:\/\/www.iri.com\/blog\/data-transformation2\/creating-executing-sql-statements-in-iri-workbench\/\">SQL Scrapbook<\/a> feature of IRI Workbench.<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-data-target-odbc.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14959 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-data-target-odbc.png\" alt=\"\" width=\"550\" height=\"380\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-data-target-odbc.png 739w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-data-target-odbc-300x207.png 300w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/a><\/p>\n<p>Here is the .sql file I built and ran to create that table:<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-sql-table-create.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-14968 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-sql-table-create.png\" alt=\"\" width=\"630\" height=\"61\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-sql-table-create.png 630w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-sql-table-create-300x29.png 300w\" sizes=\"(max-width: 630px) 100vw, 630px\" \/><\/a><\/p>\n<p>Once again, I am also able to create the locator specifications for the column names to assure they will conform to the target table layout, even if they differ from the \/FIELD name(s) in the \/INFILE or \/OUTFILE section of the job script. Here, I am adding the ODEF location definitions:<\/p>\n<p>Select the OK button and the Finish.<\/p>\n<h6><b>RDB Test Table Data<\/b><\/h6>\n<p>At the bottom of the IRI Workbench screenshot below, the data in the Oracle database is displayed via SQL SELECT in tabular format<i> (Claim_Number,Create_ Date\u2026).<\/i><\/p>\n<h6><b>Adding a Lookup Rule for Doctors<\/b><\/h6>\n<p>I also want to add a column in my targets for the names of doctors in an existing table in Oracle that match claim numbers in that table and another I\u2019m generating. This simulates a join scenario.<\/p>\n<p>Suppose you have a database table with a few of the claim numbers that also has a column with the attending doctor\u2019s name. We can look up the doctor&#8217;s name that exists in the table and use a default name for the non-existent claims.<\/p>\n<p>If there is a match, the associated doctor name from the lookup table will be put into the output table. If there is no match, then the default value will be used in the output:<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-doctors.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-14961 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-doctors.png\" alt=\"\" width=\"577\" height=\"299\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-doctors.png 577w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-doctors-300x155.png 300w\" sizes=\"(max-width: 577px) 100vw, 577px\" \/><\/a><\/p>\n<p>To create a value lookup rule and apply it to the <i>DR_NAME<\/i> column, select the field in the target field layout editor dialog that will get a lookup value into. Right click on the field to create a rule:<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-field-layout.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14964 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-field-layout.png\" alt=\"\" width=\"551\" height=\"418\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-field-layout.png 841w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-field-layout-300x228.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-field-layout-768x583.png 768w\" sizes=\"(max-width: 551px) 100vw, 551px\" \/><\/a><\/p>\n<p>Name the rule, click next, and apply it using the Table Lookup dialog attributes:<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-table-lookup.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14965 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-table-lookup.png\" alt=\"\" width=\"550\" height=\"416\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-table-lookup.png 843w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-table-lookup-300x227.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-table-lookup-768x581.png 768w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/a><\/p>\n<p>In this case, the last field, <i>DR_NAME<\/i>, will get values from the names of doctors associated with each <i>CLAIM_NUMBER<\/i> from the table named LOOKUP:<\/p>\n<p><a href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-sql-results.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14960 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-sql-results-1024x417.png\" alt=\"\" width=\"749\" height=\"305\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-sql-results-1024x417.png 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-sql-results-300x122.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-sql-results-768x313.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-sql-results.png 1373w\" sizes=\"(max-width: 749px) 100vw, 749px\" \/><\/a><\/p>\n<h6><b>Creating Job Diagrams from Script<\/b><\/h6>\n<p>Given a valid RowGen (.rcl) job script in IRI Workbench, I can create a workflow and transform mapping diagram to use, share, and work in as well.<\/p>\n<p>Create a workflow diagram from inside the script editing window with a right click, then click on IRI and <b>Create Flow from Script<\/b>. Once the workflow diagram is open, double-click on the central brown task block to create the transform mapping diagram showing the (actual) source-to- (test) target field movement.<\/p>\n<p><a href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-flow-from-script.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14962 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-flow-from-script-1024x564.png\" alt=\"\" width=\"650\" height=\"358\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-flow-from-script-1024x564.png 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-flow-from-script-300x165.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-flow-from-script-768x423.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-flow-from-script.png 1920w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/a><\/p>\n<h6><b>All Together in IRI Workbench<\/b><\/h6>\n<p>This screenshot shows the RowGen job script and mapping diagram, and all four output files; i.e., my test targets in JSON, CSV, XML and SQL:<\/p>\n<p><a href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-collage2.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14963 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-collage2-1024x576.png\" alt=\"\" width=\"650\" height=\"366\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-collage2-1024x576.png 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-collage2-300x169.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-collage2-768x432.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-collage2.png 1920w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/a><\/p>\n<h6><b>The Full Job Script<\/b><\/h6>\n<p><a href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-rowgen-script.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-14941 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-rowgen-script-1024x792.png\" alt=\"\" width=\"699\" height=\"541\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-rowgen-script-1024x792.png 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-rowgen-script-300x232.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-rowgen-script-768x594.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-rowgen-script.png 1379w\" sizes=\"(max-width: 699px) 100vw, 699px\" \/><\/a><\/p>\n<p>This job code (.rcl script) was created with the <i>New Test Job Wizard<\/i> &#8212; and some dialog tweaks to the script after the fact &#8212; in the IRI Workbench <a href=\"https:\/\/www.iri.com\/products\/workbench\/rowgen-gui\">GUI for RowGen<\/a>. If you need help using RowGen or have any questions about what it can do, email <a href=\"mailto:rowgen@iri.com\">rowgen@iri.com<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article demonstrates how to synthesize and write data to CSV, JSON, and XML files, plus an Oracle table all at once via the IRI RowGen New Test Data Job wizard in IRI Workbench. If you are interested in synthesizing and populating an entire RDB schema with referential integrity however, see this article. The IRI<\/p>\n<div><a class=\"btn-filled btn\" href=\"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/\" title=\"Creating CSV, JSON, XML and RDB Test Data\">Read More<\/a><\/div>\n","protected":false},"author":53,"featured_media":14962,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[8,34,91,29,3],"tags":[1534,1505,89,526,1204,850,1521,1533,88,760],"class_list":["post-14936","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-protection","category-business","category-iri-workbench","category-test-data","category-vldb-operations","tag-csv-test-data","tag-data-generation","tag-database-test-data","tag-iri-rowgen","tag-iri-sortcl","tag-iri-workbench","tag-json-test-data","tag-multi-format-test-data","tag-test-data-2","tag-xml-test-data"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Creating CSV, JSON, XML and RDB Test Data - IRI<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Creating CSV, JSON, XML and RDB Test Data - IRI\" \/>\n<meta property=\"og:description\" content=\"This article demonstrates how to synthesize and write data to CSV, JSON, and XML files, plus an Oracle table all at once via the IRI RowGen New Test Data Job wizard in IRI Workbench. If you are interested in synthesizing and populating an entire RDB schema with referential integrity however, see this article. The IRIRead More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/\" \/>\n<meta property=\"og:site_name\" content=\"IRI\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-20T19:44:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-05T16:29:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-flow-from-script.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1058\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Chaitali Mitra\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Chaitali Mitra\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/\"},\"author\":{\"name\":\"Chaitali Mitra\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/9bae14a309616863b027c2d56f532caf\"},\"headline\":\"Creating CSV, JSON, XML and RDB Test Data\",\"datePublished\":\"2021-09-20T19:44:21+00:00\",\"dateModified\":\"2024-01-05T16:29:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/\"},\"wordCount\":1670,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-flow-from-script.png\",\"keywords\":[\"csv test data\",\"data generation\",\"database test data\",\"IRI RowGen\",\"IRI SortCL\",\"IRI Workbench\",\"json test data\",\"multi-format test data\",\"test data\",\"xml test data\"],\"articleSection\":[\"Data Masking\/Protection\",\"IRI Business\",\"IRI Workbench\",\"Test Data\",\"VLDB\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/\",\"url\":\"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/\",\"name\":\"Creating CSV, JSON, XML and RDB Test Data - IRI\",\"isPartOf\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-flow-from-script.png\",\"datePublished\":\"2021-09-20T19:44:21+00:00\",\"dateModified\":\"2024-01-05T16:29:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/#primaryimage\",\"url\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-flow-from-script.png\",\"contentUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-flow-from-script.png\",\"width\":1920,\"height\":1058},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/beta.iri.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Creating CSV, JSON, XML and RDB Test Data\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#website\",\"url\":\"https:\/\/beta.iri.com\/blog\/\",\"name\":\"IRI\",\"description\":\"Total Data Management Blog\",\"publisher\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/beta.iri.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\",\"name\":\"IRI\",\"url\":\"https:\/\/beta.iri.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"contentUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"width\":750,\"height\":206,\"caption\":\"IRI\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/9bae14a309616863b027c2d56f532caf\",\"name\":\"Chaitali Mitra\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/95a11f3d0b709c00df3262bab0152f3a?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/95a11f3d0b709c00df3262bab0152f3a?s=96&d=blank&r=g\",\"caption\":\"Chaitali Mitra\"},\"sameAs\":[\"http:\/\/www.iri.com\"],\"url\":\"https:\/\/beta.iri.com\/blog\/author\/chaitalim\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Creating CSV, JSON, XML and RDB Test Data - IRI","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/","og_locale":"en_US","og_type":"article","og_title":"Creating CSV, JSON, XML and RDB Test Data - IRI","og_description":"This article demonstrates how to synthesize and write data to CSV, JSON, and XML files, plus an Oracle table all at once via the IRI RowGen New Test Data Job wizard in IRI Workbench. If you are interested in synthesizing and populating an entire RDB schema with referential integrity however, see this article. The IRIRead More","og_url":"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/","og_site_name":"IRI","article_published_time":"2021-09-20T19:44:21+00:00","article_modified_time":"2024-01-05T16:29:03+00:00","og_image":[{"width":1920,"height":1058,"url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-flow-from-script.png","type":"image\/png"}],"author":"Chaitali Mitra","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Chaitali Mitra","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/#article","isPartOf":{"@id":"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/"},"author":{"name":"Chaitali Mitra","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/9bae14a309616863b027c2d56f532caf"},"headline":"Creating CSV, JSON, XML and RDB Test Data","datePublished":"2021-09-20T19:44:21+00:00","dateModified":"2024-01-05T16:29:03+00:00","mainEntityOfPage":{"@id":"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/"},"wordCount":1670,"commentCount":0,"publisher":{"@id":"https:\/\/beta.iri.com\/blog\/#organization"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/#primaryimage"},"thumbnailUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-flow-from-script.png","keywords":["csv test data","data generation","database test data","IRI RowGen","IRI SortCL","IRI Workbench","json test data","multi-format test data","test data","xml test data"],"articleSection":["Data Masking\/Protection","IRI Business","IRI Workbench","Test Data","VLDB"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/","url":"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/","name":"Creating CSV, JSON, XML and RDB Test Data - IRI","isPartOf":{"@id":"https:\/\/beta.iri.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/#primaryimage"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/#primaryimage"},"thumbnailUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-flow-from-script.png","datePublished":"2021-09-20T19:44:21+00:00","dateModified":"2024-01-05T16:29:03+00:00","breadcrumb":{"@id":"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/#primaryimage","url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-flow-from-script.png","contentUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-flow-from-script.png","width":1920,"height":1058},{"@type":"BreadcrumbList","@id":"https:\/\/beta.iri.com\/blog\/test-data\/multi-format-test-data\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/beta.iri.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Creating CSV, JSON, XML and RDB Test Data"}]},{"@type":"WebSite","@id":"https:\/\/beta.iri.com\/blog\/#website","url":"https:\/\/beta.iri.com\/blog\/","name":"IRI","description":"Total Data Management Blog","publisher":{"@id":"https:\/\/beta.iri.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/beta.iri.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/beta.iri.com\/blog\/#organization","name":"IRI","url":"https:\/\/beta.iri.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","contentUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","width":750,"height":206,"caption":"IRI"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/9bae14a309616863b027c2d56f532caf","name":"Chaitali Mitra","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/95a11f3d0b709c00df3262bab0152f3a?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/95a11f3d0b709c00df3262bab0152f3a?s=96&d=blank&r=g","caption":"Chaitali Mitra"},"sameAs":["http:\/\/www.iri.com"],"url":"https:\/\/beta.iri.com\/blog\/author\/chaitalim\/"}]}},"jetpack_featured_media_url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2021\/09\/Multi-format-flow-from-script.png","_links":{"self":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/14936"}],"collection":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/users\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/comments?post=14936"}],"version-history":[{"count":20,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/14936\/revisions"}],"predecessor-version":[{"id":16995,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/14936\/revisions\/16995"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/media\/14962"}],"wp:attachment":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/media?parent=14936"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/categories?post=14936"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/tags?post=14936"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}