{"id":2505,"date":"2015-07-29T00:50:33","date_gmt":"2015-07-29T00:50:33","guid":{"rendered":"http:\/\/www.garysieling.com\/blog\/?p=2505"},"modified":"2015-07-29T00:50:33","modified_gmt":"2015-07-29T00:50:33","slug":"computing-absolute-values-in-rethinkdb","status":"publish","type":"post","link":"https:\/\/www.garysieling.com\/blog\/computing-absolute-values-in-rethinkdb\/","title":{"rendered":"Computing Absolute Values in RethinkDB"},"content":{"rendered":"<p>It took me a bit to figure out how to do absolute values in RethinkDB, because you can&#8217;t use conditionals and mathematical operations that you might normally expect.<\/p>\n<p>I expect that abs will be added to the language relatively soon, based on the outstanding tickets, but if you need it now, here is how to implement it:<\/p>\n<pre lang=\"Javascript\">\n  'aDelta': \n     r.branch(\n        row('Delta').gt(0), \n        row('Delta'), \n        row('Delta').mul(0)\n  ),\n<\/pre>\n<p>The following query is more complete if you want to see an example in action &#8211; this computes root-mean-square variance as well (unfortunately there does not appear to be a power function in the language as yet, so you can&#8217;t do the square root at the end that you&#8217;d want)<\/p>\n<pre lang=\"Javascript\">\nr.database('performance')\n .table('query_timings)\n .map(function(row) {\n       return {\n         'Delta': row('Delta'),\n         'aDelta': \n            r.branch(\n              row('Delta').gt(0), \n              row('Delta'), \n              row('Delta').mul(0)\n           ),\n         'rmsDelta': row('Delta').mul(row('Delta')),\n         'Count': 1\n       }\n     })\n    .group('Count')\n    .reduce(function(left, right) {\n      var Delta = left('Delta').add(right('Delta'));\n      var aDelta = left('aDelta').add(right('aDelta'));\n      var rmsDelta = left('rmsDelta').add(right('rmsDelta'));\n      var Count = left('Count').add(right('Count'));    \n  \n      return {\n        Delta: Delta,\n        Count: Count,\n        aDelta: aDelta,\n        rmsDelta: rmsDelta,\n        Variance: rmsDelta.exp(0.5),\n        Avg: Delta.div(Count)\n      }\n    })\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>It took me a bit to figure out how to do absolute values in RethinkDB, because you can&#8217;t use conditionals and mathematical operations that you might normally expect. I expect that abs will be added to the language relatively soon, based on the outstanding tickets, but if you need it now, here is how to &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.garysieling.com\/blog\/computing-absolute-values-in-rethinkdb\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Computing Absolute Values in RethinkDB&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[4],"tags":[157,160,462,466,523],"aioseo_notices":[],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts\/2505"}],"collection":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/comments?post=2505"}],"version-history":[{"count":0,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts\/2505\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/media?parent=2505"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/categories?post=2505"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/tags?post=2505"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}