{"id":3393,"date":"2023-04-12T15:32:59","date_gmt":"2023-04-12T15:32:59","guid":{"rendered":"https:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/"},"modified":"2026-01-20T15:12:11","modified_gmt":"2026-01-20T15:12:11","slug":"how-to-speed-up-tm1-odbc-output","status":"publish","type":"post","link":"https:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/","title":{"rendered":"How Do I Improve TM1 ODBC Output Performance to Speed Up Queries and Data Extracts?"},"content":{"rendered":"<p>The IBM Planning Analytics (TM1) <a href=\"https:\/\/www.ibm.com\/support\/knowledgecenter\/en\/SSD29G_2.0.0\/com.ibm.swg.ba.cognos.tm1_ref.2.0.0.doc\/r_tm1_ref_tifun_odbcoutput.html\">ODBCOutput function<\/a> is used in TurboIntegrator (TI) script to execute a SQL Update or Insert query against an open ODBC data source.<\/p>\n<p><a href=\"https:\/\/www.ibm.com\/support\/knowledgecenter\/en\/SSD29G_2.0.0\/com.ibm.swg.ba.cognos.tm1_ref.2.0.0.doc\/r_tm1_ref_tifun_odbcoutput.html\">ODBCOutput<\/a> is very useful but can be slow if exporting large numbers of records, especially in a cloud environment. A typical TI process that uses ODBCOutput will have a TM1 cube view as a data source where the ODBC connection is established (using <a href=\"https:\/\/www.ibm.com\/support\/knowledgecenter\/en\/SSD29G_2.0.0\/com.ibm.swg.ba.cognos.tm1_ref.2.0.0.doc\/r_tm1_ref_tifun_odbcopen.html\">ODBCOpen<\/a>) on the Prolog tab, and then ODBCOutput is called\u00a0 on the Data tab, so that it executes once for every value in the data source.<\/p>\n<p>Let\u2019s use this Finance cube with 4 dimensions as an example. Suppose we have created a data source cube view on this cube to upload Budget values to a table called BudgetAccountBalances in the relational data warehouse.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-787\" src=\"https:\/\/quebit.com\/askquebit\/wp-content\/uploads\/2019\/10\/TM1-min.jpg\" alt=\"\" width=\"200\" height=\"174\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>The TI process will loop through all the Budget values in this Finance cube, and build a SQL statement for each value that looks something like this:<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"623\">INSERT INTO BudgetAccountBalances ([RunTime],[Version],[Period],[CostCenter],[Account],[Value])<\/p>\n<p>VALUES ( <em>vRunTime<\/em>, <em>dVersion<\/em>, <em>dPeriod<\/em>, <em>dCostCenter<\/em>, <em>dAccount<\/em>, <em>dValue<\/em> );<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The TI script to generate the SQL statement, and execute it using the ODBCoutput function looks something like this:<\/p>\n<p><em>ODBCOUTPUT(&lt;ODBC Source&gt;, &#8216; &#8216;INSERT INTO BudgetAccountBalances ([RunTime],[Version],[Period],[CostCenter],[Account],[Value])&#8217;,<\/em><\/p>\n<p><em>&#8216;VALUES (&#8216;<\/em><\/p>\n<p><em>| CHAR(39) | vRunTime | CHAR(39) | &#8216;, &#8216;<\/em><\/p>\n<p><em>| CHAR(39) | dVersion | CHAR(39) | &#8216;, &#8216;<\/em><\/p>\n<p><em>| CHAR(39) | dPeriod | CHAR(39) | &#8216; , &#8216;<\/em><\/p>\n<p><em>| CHAR(39) | dCostCenter | CHAR(39) | &#8216; , &#8216;<\/em><\/p>\n<p><em>| CHAR(39) | dAccount | CHAR(39) | &#8216; , &#8216;<\/em><\/p>\n<p><em>| CHAR(39) | NUMBERTOSTRING(dValue) | CHAR(39) | &#8216;\u00a0 );&#8217;);<\/em><\/p>\n<p>In this statement, vRuntime is defined in the Prolog where it grabs the current day and time, and the variables that begin with \u201cd\u201d all come from the data source, and are named on the TI process Variables tab.<\/p>\n<p>For each record, the TI process executes this statement. In a cloud environment or a slow network, this can take a long time because the process must create this statement, communicate across networks (from wherever the TM1 model is hosted to wherever the target data warehouse is located), and then execute this command in the data warehouse. In one instance we have seen a process with around 200,000 records take 3+ hours!<\/p>\n<p>To work around this situation, what you can do is create a longer SQL INSERT statement that appends multiple records from the data source at one time. With a longer INSERT statement, the ODBCOutput command is executed fewer times and there is less communication between networks even though the same number of records get written to the target. The result is a performance improvement! Furthermore, sending \u201cbatches\u201d of records to the target data warehouse at once enhances performance there too!.<\/p>\n<p>Suppose we want to create a batch for every 5 records (the batch size). Then the form of the batched SQL statement will look something like this:<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"623\">INSERT INTO BudgetAccountBalances ([RunTime],[Version],[Period],[CostCenter],[Account],[Value])<\/p>\n<p>VALUES ( <em>vRunTime1<\/em>, <em>dVersion1<\/em>, <em>dPeriod1<\/em>, <em>dCostCenter1<\/em>, <em>dAccount1<\/em>, <em>dValue1<\/em> )<\/p>\n<p>, ( <em>vRunTime2<\/em>, <em>dVersion2<\/em>, <em>dPeriod2<\/em>, <em>dCostCenter2<\/em>, <em>dAccount2<\/em>, <em>dValue2<\/em> )<\/p>\n<p>, ( <em>vRunTime3<\/em>, <em>dVersion3<\/em>, <em>dPeriod3<\/em>, <em>dCostCenter3<\/em>, <em>dAccount3<\/em>, <em>dValue3<\/em> )<\/p>\n<p>, ( <em>vRunTime4<\/em>, <em>dVersion4<\/em>, <em>dPeriod4<\/em>, <em>dCostCenter4<\/em>, <em>dAccount4<\/em>, <em>dValue4<\/em> )<\/p>\n<p>, ( <em>vRunTime5<\/em>, <em>dVersion5<\/em>, <em>dPeriod5<\/em>, <em>dCostCenter5<\/em>, <em>dAccount5<\/em>, <em>dValue5<\/em> )<\/p>\n<p>;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Below is what the code in the Data tab would look like by taking this approach. Notice that there is a counter (<em>vRecord<\/em>) that is incremented for each data source value, as the SQL statement is extended. ODBCoutput is only called when the counter reaches the batch size (<em>vExportForEveryxRecords<\/em>). After the batch is sent, the counter resets to 1, and construction of the next batch of records commences.<\/p>\n<p><em>\u00a0<\/em><\/p>\n<p><em>IF( vSQLQuery @= &#8221;);<\/em><\/p>\n<p><em>\u00a0\u00a0\u00a0 vSQLQuery = &#8216;INSERT INTO BudgetAccountBalances ([RunTime],[Version],[Period],[CostCenter],[Account],[Value]) \u00a0VALUES&#8217;; <\/em><\/p>\n<p><em>ENDIF;<\/em><\/p>\n<p><em>\u00a0<\/em><\/p>\n<p><em>\u00a0 vRecordToAdd =\u00a0\u00a0\u00a0 &#8216;(&#8216;<\/em><\/p>\n<p><em>\u00a0| CHAR(39) | vRunTime | CHAR(39) | &#8216;, &#8216; <\/em><\/p>\n<p><em>| CHAR(39) | dVersion | CHAR(39) | &#8216;, &#8216; <\/em><\/p>\n<p><em>\u00a0| CHAR(39) | dPeriod | CHAR(39) | &#8216; , &#8216;<\/em><\/p>\n<p><em>\u00a0| CHAR(39) | dCostCenter | CHAR(39) | &#8216; , &#8216; <\/em><\/p>\n<p><em>| CHAR(39) | dAccount | CHAR(39) | &#8216; , &#8216; <\/em><\/p>\n<p><em>\u00a0| CHAR(39)\u00a0 | NUMBERTOSTRING(dValue) | CHAR(39) | &#8216;\u00a0 )&#8217;;<\/em><\/p>\n<p><em>\u00a0<\/em><\/p>\n<p><em>vSQLQuery = vSQLQuery | IF( vRecord &gt; 1 , &#8216;,&#8217; , &#8221;) | vRecordToAdd ;<\/em><\/p>\n<p><em>\u00a0<\/em><\/p>\n<p><em>IF( vRecord = vExportForEveryxRecords );<\/em><\/p>\n<p><em>\u00a0 ODBCOutput( ODBCSource, vSQLQuery);<\/em><\/p>\n<p><em>\u00a0 vSQLQuery = &#8221;;<\/em><\/p>\n<p><em>\u00a0 vRecord = 1;<\/em><\/p>\n<p><em>ELSE;<\/em><\/p>\n<p><em>\u00a0 vRecord = vRecord + 1;<\/em><\/p>\n<p><em>ENDIF;<\/em><\/p>\n<p><em>\u00a0<\/em><\/p>\n<p>In this example vSQLQuery is defined in the Prolog as a blank string statement and then is redefined on multiple times on the data tab. vRecordtoAdd is defined in the Prolog as a blank string statement and then is redefined on the data tab. vRecord is defined in the Prolog as 0, and then is redefined multiple times on the data tab. vExportForEveryxRecords is defined on the Prolog as however many records should be included in a \u201cbatch\u201d. If going with the \u201cbatch\u201d approach, it is required to have this code in the epilog that picks up the last remaining records that are smaller than the full \u201cbatch\u201d amount:<\/p>\n<p>&nbsp;<\/p>\n<p><em>IF( vSQLQuery @&lt;&gt; &#8221;);<\/em><\/p>\n<p><em>ODBCOutput(ODBCSource, vSQLQuery);<\/em><\/p>\n<p><em>ENDIF;<\/em><\/p>\n<p><em>ODBCClose(ODBCSource);<\/em><\/p>\n<p>&nbsp;<\/p>\n<p>Although batching adds complexity to the TI script code, it is worth it! Returning to the earlier example where 200,000 records took 3+ hours to process without batching, processing time improved dramatically to 7 minutes with batching, using batches of 500!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The IBM Planning Analytics (TM1) ODBCOutput function is used in TurboIntegrator (TI) script to execute a SQL Update or Insert query against an open ODBC data source. ODBCOutput is very useful but can be slow if exporting large numbers of records, especially in a cloud environment. A typical TI process that uses ODBCOutput will have&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[24],"tags":[35,36,52],"class_list":["post-3393","post","type-post","status-publish","format-standard","hentry","category-ibm","tag-development","tag-planning-analytics","tag-planning-analytics-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How Do I Improve TM1 ODBC Output Performance to Speed Up Queries and Data Extracts? - QueBIT<\/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:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How Do I Improve TM1 ODBC Output Performance to Speed Up Queries and Data Extracts? - QueBIT\" \/>\n<meta property=\"og:description\" content=\"The IBM Planning Analytics (TM1) ODBCOutput function is used in TurboIntegrator (TI) script to execute a SQL Update or Insert query against an open ODBC data source. ODBCOutput is very useful but can be slow if exporting large numbers of records, especially in a cloud environment. A typical TI process that uses ODBCOutput will have&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/\" \/>\n<meta property=\"og:site_name\" content=\"QueBIT\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-12T15:32:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-20T15:12:11+00:00\" \/>\n<meta name=\"author\" content=\"agoddard\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"agoddard\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/how-to-speed-up-tm1-odbc-output\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/how-to-speed-up-tm1-odbc-output\\\/\"},\"author\":{\"name\":\"agoddard\",\"@id\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/#\\\/schema\\\/person\\\/e52d72da0fd2f5f70d189343fe4f5084\"},\"headline\":\"How Do I Improve TM1 ODBC Output Performance to Speed Up Queries and Data Extracts?\",\"datePublished\":\"2023-04-12T15:32:59+00:00\",\"dateModified\":\"2026-01-20T15:12:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/how-to-speed-up-tm1-odbc-output\\\/\"},\"wordCount\":781,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/how-to-speed-up-tm1-odbc-output\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/wp-content\\\/uploads\\\/2019\\\/10\\\/TM1-min.jpg\",\"keywords\":[\"Development\",\"Planning Analytics\",\"Planning Analytics Development\"],\"articleSection\":[\"IBM\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/quebit.com\\\/askquebit\\\/how-to-speed-up-tm1-odbc-output\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/how-to-speed-up-tm1-odbc-output\\\/\",\"url\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/how-to-speed-up-tm1-odbc-output\\\/\",\"name\":\"How Do I Improve TM1 ODBC Output Performance to Speed Up Queries and Data Extracts? - QueBIT\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/how-to-speed-up-tm1-odbc-output\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/how-to-speed-up-tm1-odbc-output\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/wp-content\\\/uploads\\\/2019\\\/10\\\/TM1-min.jpg\",\"datePublished\":\"2023-04-12T15:32:59+00:00\",\"dateModified\":\"2026-01-20T15:12:11+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/#\\\/schema\\\/person\\\/e52d72da0fd2f5f70d189343fe4f5084\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/how-to-speed-up-tm1-odbc-output\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/quebit.com\\\/askquebit\\\/how-to-speed-up-tm1-odbc-output\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/how-to-speed-up-tm1-odbc-output\\\/#primaryimage\",\"url\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/wp-content\\\/uploads\\\/2019\\\/10\\\/TM1-min.jpg\",\"contentUrl\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/wp-content\\\/uploads\\\/2019\\\/10\\\/TM1-min.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/how-to-speed-up-tm1-odbc-output\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How Do I Improve TM1 ODBC Output Performance to Speed Up Queries and Data Extracts?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/#website\",\"url\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/\",\"name\":\"QueBIT\",\"description\":\"QueBIT\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/#\\\/schema\\\/person\\\/e52d72da0fd2f5f70d189343fe4f5084\",\"name\":\"agoddard\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d817b364cff1d66116debde8d1c85e5e76eeece9c5ae731b19276a6040231455?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d817b364cff1d66116debde8d1c85e5e76eeece9c5ae731b19276a6040231455?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d817b364cff1d66116debde8d1c85e5e76eeece9c5ae731b19276a6040231455?s=96&d=mm&r=g\",\"caption\":\"agoddard\"},\"sameAs\":[\"https:\\\/\\\/quebit.com\\\/askquebit\"],\"url\":\"https:\\\/\\\/quebit.com\\\/askquebit\\\/author\\\/agoddard\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How Do I Improve TM1 ODBC Output Performance to Speed Up Queries and Data Extracts? - QueBIT","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:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/","og_locale":"en_US","og_type":"article","og_title":"How Do I Improve TM1 ODBC Output Performance to Speed Up Queries and Data Extracts? - QueBIT","og_description":"The IBM Planning Analytics (TM1) ODBCOutput function is used in TurboIntegrator (TI) script to execute a SQL Update or Insert query against an open ODBC data source. ODBCOutput is very useful but can be slow if exporting large numbers of records, especially in a cloud environment. A typical TI process that uses ODBCOutput will have&hellip;","og_url":"https:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/","og_site_name":"QueBIT","article_published_time":"2023-04-12T15:32:59+00:00","article_modified_time":"2026-01-20T15:12:11+00:00","author":"agoddard","twitter_card":"summary_large_image","twitter_misc":{"Written by":"agoddard","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/#article","isPartOf":{"@id":"https:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/"},"author":{"name":"agoddard","@id":"https:\/\/quebit.com\/askquebit\/#\/schema\/person\/e52d72da0fd2f5f70d189343fe4f5084"},"headline":"How Do I Improve TM1 ODBC Output Performance to Speed Up Queries and Data Extracts?","datePublished":"2023-04-12T15:32:59+00:00","dateModified":"2026-01-20T15:12:11+00:00","mainEntityOfPage":{"@id":"https:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/"},"wordCount":781,"commentCount":0,"image":{"@id":"https:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/#primaryimage"},"thumbnailUrl":"https:\/\/quebit.com\/askquebit\/wp-content\/uploads\/2019\/10\/TM1-min.jpg","keywords":["Development","Planning Analytics","Planning Analytics Development"],"articleSection":["IBM"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/","url":"https:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/","name":"How Do I Improve TM1 ODBC Output Performance to Speed Up Queries and Data Extracts? - QueBIT","isPartOf":{"@id":"https:\/\/quebit.com\/askquebit\/#website"},"primaryImageOfPage":{"@id":"https:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/#primaryimage"},"image":{"@id":"https:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/#primaryimage"},"thumbnailUrl":"https:\/\/quebit.com\/askquebit\/wp-content\/uploads\/2019\/10\/TM1-min.jpg","datePublished":"2023-04-12T15:32:59+00:00","dateModified":"2026-01-20T15:12:11+00:00","author":{"@id":"https:\/\/quebit.com\/askquebit\/#\/schema\/person\/e52d72da0fd2f5f70d189343fe4f5084"},"breadcrumb":{"@id":"https:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/#primaryimage","url":"https:\/\/quebit.com\/askquebit\/wp-content\/uploads\/2019\/10\/TM1-min.jpg","contentUrl":"https:\/\/quebit.com\/askquebit\/wp-content\/uploads\/2019\/10\/TM1-min.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/quebit.com\/askquebit\/how-to-speed-up-tm1-odbc-output\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/quebit.com\/askquebit\/"},{"@type":"ListItem","position":2,"name":"How Do I Improve TM1 ODBC Output Performance to Speed Up Queries and Data Extracts?"}]},{"@type":"WebSite","@id":"https:\/\/quebit.com\/askquebit\/#website","url":"https:\/\/quebit.com\/askquebit\/","name":"QueBIT","description":"QueBIT","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/quebit.com\/askquebit\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/quebit.com\/askquebit\/#\/schema\/person\/e52d72da0fd2f5f70d189343fe4f5084","name":"agoddard","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d817b364cff1d66116debde8d1c85e5e76eeece9c5ae731b19276a6040231455?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d817b364cff1d66116debde8d1c85e5e76eeece9c5ae731b19276a6040231455?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d817b364cff1d66116debde8d1c85e5e76eeece9c5ae731b19276a6040231455?s=96&d=mm&r=g","caption":"agoddard"},"sameAs":["https:\/\/quebit.com\/askquebit"],"url":"https:\/\/quebit.com\/askquebit\/author\/agoddard\/"}]}},"_links":{"self":[{"href":"https:\/\/quebit.com\/askquebit\/wp-json\/wp\/v2\/posts\/3393","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/quebit.com\/askquebit\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/quebit.com\/askquebit\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/quebit.com\/askquebit\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/quebit.com\/askquebit\/wp-json\/wp\/v2\/comments?post=3393"}],"version-history":[{"count":2,"href":"https:\/\/quebit.com\/askquebit\/wp-json\/wp\/v2\/posts\/3393\/revisions"}],"predecessor-version":[{"id":5031,"href":"https:\/\/quebit.com\/askquebit\/wp-json\/wp\/v2\/posts\/3393\/revisions\/5031"}],"wp:attachment":[{"href":"https:\/\/quebit.com\/askquebit\/wp-json\/wp\/v2\/media?parent=3393"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/quebit.com\/askquebit\/wp-json\/wp\/v2\/categories?post=3393"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/quebit.com\/askquebit\/wp-json\/wp\/v2\/tags?post=3393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}