CINXE.COM

7 Reasons Looker Built LookML - A New Language For Data | Looker

<!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9"><![endif]--> <!--[if gt IE 8]><html class="no-js" prefix="og: http://ogp.me/ns#"><![endif]--> <html lang="en-US" prefix="og: http://ogp.me/ns#"> <head><script type="text/javascript" src="/_static/js/bundle-playback.js?v=HxkREWBo" charset="utf-8"></script> <script type="text/javascript" src="/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("https://looker.com/blog/7-reasons-looker-built-a-new-language-for-data?utm_source=cloud.google.com/looker&amp;utm_medium=referral&amp;utm_campaign=7012R000001JIJ0","20210411153050","https://web.archive.org/","web","/_static/", "1618155050"); </script> <link rel="stylesheet" type="text/css" href="/_static/css/banner-styles.css?v=S1zqJCYt" /> <link rel="stylesheet" type="text/css" href="/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <!-- @@@@@@@@@@@@@ META TAGS @@@@@@@@@@@@@ --> <meta charset="utf-8"> <!-- twitter card --> <meta name="twitter:card" content="summary_large_image"/> <meta name="twitter:site" content="@LookerData"/> <meta name="twitter:title" content="7 reasons Looker built a new language for data"/> <meta name="twitter:description" content="LookML, our language for data, is what makes Looker uniquely powerful and trustworthy. See why we built LookML—a better way to write SQL without replacing it."/> <meta name="twitter:image" content="https://web.archive.org/web/20210411153050im_/https://looker.com/assets/img/images/blog/2018/01/new_language_for_data/social.jpg"/> <meta property="og:site_name" content="Looker"> <meta property="og:url" content="https://web.archive.org/web/20210411153050/https://looker.com/blog/7-reasons-looker-built-a-new-language-for-data"> <meta property="og:type" content="article"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- swiftype --> <meta class="swiftype" name="title" data-type="string" content="7 reasons Looker built a new language for data"> <meta class="swiftype" name="site-priority" data-type="integer" content="1"> <title> 7 Reasons Looker Built LookML - A New Language For Data | Looker </title> <meta class="swiftype" name="description" data-type="string" content="LookML, our language for data, is what makes Looker uniquely powerful and trustworthy. See why we built LookML—a better way to write SQL without replacing it."> <meta property="og:image" content="https://web.archive.org/web/20210411153050im_/https://looker.com/assets/img/images/blog/2018/01/new_language_for_data/social.jpg"> <meta property="og:description" content="LookML, our language for data, is what makes Looker uniquely powerful and trustworthy. See why we built LookML—a better way to write SQL without replacing it."> <meta property="og:title" content="7 reasons Looker built a new language for data"> <!-- @@@@@@@@@@@@@ FAVICONS @@@@@@@@@@@@@ --> <link rel="apple-touch-icon" sizes="180x180" href="/web/20210411153050im_/https://looker.com/assets/img/images/favicons2/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="/web/20210411153050im_/https://looker.com/assets/img/images/favicons2/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="/web/20210411153050im_/https://looker.com/assets/img/images/favicons2/favicon-16x16.png"> <link rel="manifest" href="/web/20210411153050/https://looker.com/assets/img/images/favicons2/site.webmanifest"> <link rel="mask-icon" href="/web/20210411153050im_/https://looker.com/assets/img/images/favicons2/safari-pinned-tab.svg" color="#1a73e8"> <meta name="msapplication-TileColor" content="#1a73e8"> <meta name="theme-color" content="#ffffff"> <!-- @@@@@@@@@@@@@ LINK TAGS @@@@@@@@@@@@@ --> <!-- feeds --> <link rel="alternate" type="application/rss+xml" href="/web/20210411153050/https://looker.com/feed" title="Looker RSS Feed"> <!--mp_linkcode_begins--> <script nonce="Q87E9FL4A5T3BRMDJ" src="/web/20210411153050js_/https://looker.com/site/themes/surf_verve/js/mp/mp_linkcode.js"></script> <!--mp_linkcode_ends--> <!--– mp_snippet_begins --> <script nonce="Q87E9FL4A5T3BRMDJ"> MP.UrlLang='mp_js_current_lang'; MP.SrcUrl=decodeURIComponent('mp_js_orgin_url'); MP.oSite=decodeURIComponent('mp_js_origin_baseUrl'); MP.tSite=decodeURIComponent('mp_js_translated_baseUrl'); MP.init(); </script> <!--– mp_snippet_ends --> <!-- styles --> <style> /*! normalize.css v3.0.2 | MIT License | git.io/normalize */img,legend{border:0}legend,td,th{padding:0}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}table{border-collapse:collapse;border-spacing:0} </style> <link rel="stylesheet" href="https://web.archive.org/web/20210411153050cs_/https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700|Material+Icons"> <link rel="stylesheet" href="/web/20210411153050cs_/https://looker.com/site/themes/surf_verve/css/surf_verve.css?v=1618004455"> <!-- blog social buttons --> <script nonce="Q87E9FL4A5T3BRMDJ" type="text/javascript" src="//web.archive.org/web/20210411153050js_/https://platform-api.sharethis.com/js/sharethis.js#property=5966e9a457e5f5001295cffb&amp;product=inline-share-buttons" async="async"></script> <!-- canonical link --> <link rel="canonical" href="https://web.archive.org/web/20210411153050/https://looker.com/blog/7-reasons-looker-built-a-new-language-for-data"> </head> <body class="site blog"> <div class="page-wrap"> <div id="pattern" class="pattern new-nav" data-swiftype-index="false"> <div class="container"> <div class="logo-nav"> <a href="/web/20210411153050/https://looker.com/" class="nav-logo"> <img src="/web/20210411153050im_/https://looker.com/assets/img/images/logos/looker.svg" alt="Looker"> </a> </div> <div id="o-wrapper" class="o-wrapper"> <!--mp_trans_disable_start--> <a class="search-trigger-small"> <i class="material-icons m-menu-search" aria-hidden="true">search</i> </a> <form id="global-search-form-small" class="search-form"> <span class="fa fa-search" aria-hidden="true"> </span> <input type="text" id="global-searchbox-small" placeholder="Search" class="st-default-search-input"> <i class="material-icons search-close-small" aria-hidden="true">close</i> </form> <span id="c-button--push-right" class="c-button hamburger"> <i class="material-icons m-menu-menu" aria-hidden="true">menu</i> </span> <!--mp_trans_disable_end--> </div> <div class="nav"> <nav id="menu" class=""> <ul class="main-nav no-style"> <li id="mm-link1" class="mm-link"> <a> product </a> <div class="m-menu" id="mega-menu1"> <div class="mm-inner"> <a href="/web/20210411153050/https://looker.com/product/business-intelligence"> <p class="alt secondary-nav-gtm">Business Intelligence</p> </a> <a href="/web/20210411153050/https://looker.com/product/embedded-analytics"> <p class="alt secondary-nav-gtm">Embedded Analytics</p> </a> <a href="/web/20210411153050/https://looker.com/product/applications"> <p class="alt secondary-nav-gtm">Applications</p> </a> <a href="/web/20210411153050/https://looker.com/product/looker-difference"> <p class="alt secondary-nav-gtm">The Looker Difference</p> </a> <a href="/web/20210411153050/https://looker.com/product/new-features"> <p class="alt secondary-nav-gtm">New Features</p> </a> <a href="/web/20210411153050/https://looker.com/product/visualizations"> <p class="alt secondary-nav-gtm">Visualizations</p> </a> <a href="/web/20210411153050/https://looker.com/professional-services"> <p class="alt secondary-nav-gtm">Professional Services</p> </a> <a href="/web/20210411153050/https://looker.com/product/security"> <p class="alt secondary-nav-gtm">Security</p> </a> <a href="/web/20210411153050/https://looker.com/product/pricing"> <p class="alt secondary-nav-gtm">Pricing</p> </a> </div> </div> </li> <li id="mm-link2" class="mm-link"> <a> platform </a> <div class="m-menu" id="mega-menu2"> <div class="mm-inner"> <a href="/web/20210411153050/https://looker.com/platform/overview"> <p class="alt secondary-nav-gtm">Data Platform</p> </a> <a href="/web/20210411153050/https://looker.com/platform/data-modeling"> <p class="alt secondary-nav-gtm">Data Modeling</p> </a> <a href="/web/20210411153050/https://looker.com/platform/actions"> <p class="alt secondary-nav-gtm">Data Actions</p> </a> <a href="/web/20210411153050/https://looker.com/platform/directory/home"> <p class="alt secondary-nav-gtm">Looker Blocks</p> </a> <a href="/web/20210411153050/https://looker.com/platform/data-connections"> <p class="alt secondary-nav-gtm">Data Connections</p> </a> <a href="/web/20210411153050/https://looker.com/partner-network"> <p class="alt secondary-nav-gtm">Partner Ecosystem</p> </a> <a href="/web/20210411153050/https://looker.com/platform/enterprise"> <p class="alt secondary-nav-gtm">Looker for Enterprise</p> </a> </div> </div> </li> <li id="mm-link3" class="mm-link"> <a> solutions </a> <div class="m-menu" id="mega-menu3"> <div class="mm-inner"> <p class="title no-margin"> industries </p> <a href="/web/20210411153050/https://looker.com/solutions/ecommerce"> <p class="alt secondary-nav-gtm">eCommerce</p> </a> <a href="/web/20210411153050/https://looker.com/solutions/media"> <p class="alt secondary-nav-gtm">Media</p> </a> <a href="/web/20210411153050/https://looker.com/solutions/ad-tech"> <p class="alt secondary-nav-gtm">Ad Tech</p> </a> <a href="/web/20210411153050/https://looker.com/solutions/saas"> <p class="alt secondary-nav-gtm">SaaS</p> </a> <a href="/web/20210411153050/https://looker.com/solutions/healthcare"> <p class="alt secondary-nav-gtm">Healthcare</p> </a> <a href="/web/20210411153050/https://looker.com/solutions/gaming"> <p class="alt secondary-nav-gtm">Gaming</p> </a> <a href="/web/20210411153050/https://looker.com/solutions/fintech"> <p class="alt secondary-nav-gtm">FinTech</p> </a> <a href="/web/20210411153050/https://looker.com/solutions/retail"> <p class="alt secondary-nav-gtm">Retail</p> </a> </div> <div class="mm-inner"> <p class="title no-margin"> departments </p> <a href="/web/20210411153050/https://looker.com/solutions/marketing-analytics"> <p class="alt secondary-nav-gtm">Marketing</p> </a> <a href="/web/20210411153050/https://looker.com/solutions/sales-analytics"> <p class="alt secondary-nav-gtm">Sales</p> </a> <a href="/web/20210411153050/https://looker.com/solutions/account-management"> <p class="alt secondary-nav-gtm">Account Management</p> </a> <a href="/web/20210411153050/https://looker.com/solutions/support-analytics"> <p class="alt secondary-nav-gtm">Customer Support</p> </a> <a href="/web/20210411153050/https://looker.com/solutions/data-science"> <p class="alt secondary-nav-gtm">Data Science</p> </a> <a href="/web/20210411153050/https://looker.com/solutions/product-analytics"> <p class="alt secondary-nav-gtm">Product</p> </a> <a href="/web/20210411153050/https://looker.com/solutions/operation-logistics"> <p class="alt secondary-nav-gtm">Operations and Logistics</p> </a> <a href="/web/20210411153050/https://looker.com/solutions/web-analytics"> <p class="alt secondary-nav-gtm">Web Analytics</p> </a> </div> <div class="mm-inner"> <p class="title no-margin"> databases </p> <a href="/web/20210411153050/https://looker.com/solutions/amazon-redshift"> <p class="alt secondary-nav-gtm">Amazon Redshift</p> </a> <a href="/web/20210411153050/https://looker.com/solutions/google-bigquery"> <p class="alt secondary-nav-gtm">Google BigQuery</p> </a> <a href="/web/20210411153050/https://looker.com/solutions/snowflake"> <p class="alt secondary-nav-gtm">Snowflake</p> </a> <a href="/web/20210411153050/https://looker.com/solutions/ibm-db2-warehouse-on-cloud"> <p class="alt secondary-nav-gtm">IBM Db2 Warehouse on Cloud</p> </a> <a href="/web/20210411153050/https://looker.com/solutions/databases"> <p class="alt secondary-nav-gtm">All Databases</p> </a> </div> </div> </li> <li id="mm-link5" class="mm-link"> <a> learn </a> <div class="m-menu" id="mega-menu5"> <div class="mm-inner"> <a href="/web/20210411153050/https://looker.com/guide"> <p class="alt secondary-nav-gtm">User Guide</p> </a> <a href="/web/20210411153050/https://looker.com/guide/getting-started"> <p class="alt secondary-nav-gtm">Getting Started</p> </a> <a href="https://web.archive.org/web/20210411153050/https://help.looker.com/"> <p class="alt secondary-nav-gtm">Help Center</p> </a> <a href="https://web.archive.org/web/20210411153050/https://docs.looker.com/"> <p class="alt secondary-nav-gtm">Documentation</p> </a> <a href="https://web.archive.org/web/20210411153050/https://community.looker.com/"> <p class="alt secondary-nav-gtm">Community</p> </a> <a href="https://web.archive.org/web/20210411153050/https://training.looker.com/"> <p class="alt secondary-nav-gtm">Training</p> </a> <a href="/web/20210411153050/https://looker.com/certification"> <p class="alt secondary-nav-gtm">Certification</p> </a> <a href="https://web.archive.org/web/20210411153050/https://info.looker.com/whitepapers"> <p class="alt secondary-nav-gtm">Whitepapers</p> </a> <a href="https://web.archive.org/web/20210411153050/https://info.looker.com/analyst-reports"> <p class="alt secondary-nav-gtm">Analyst Reports</p> </a> </div> </div> </li> </ul> </nav> <!--mp_trans_disable_start--> <div class="nav-search"> <a class="search-trigger-large"> <i class="material-icons nav-search-icon" aria-hidden="true">search</i> </a> <div class="form-container-large"> <form id="global-search-form" class="search-form"> <span class="fa fa-search" aria-hidden="true"></span> <input type="text" id="global-searchbox" placeholder="Search" class="st-default-search-input"> </form> <i class="material-icons search-close-large" aria-hidden="true">close</i> </div> </div> <!--mp_trans_disable_end--> </div> <div class="nav2"> <!--mp_global_switch_begins--> <a mporgnav id="mp" class="user-locale" title="Global Switch" style="padding: 0; cursor:pointer !important"> <img class="globe" src="/web/20210411153050im_/https://looker.com/assets/img/images/icons/globe_grey.png"> </a> <!--mp_global_switch_ends--> <a href="/web/20210411153050/https://looker.com/demo" class="btn primary"> Request a demo </a> </div> </div> </div> <!-- mobile menu --> <div id="c-menu--push-right" class="c-menu c-menu--push-right gsans padding-bottom--20" data-swiftype-index="false"> <div id="m-menu-top-container"> <a href="/web/20210411153050/https://looker.com/"> <img id="m-menu-logo" src="/web/20210411153050im_/https://looker.com/assets/img/images/logos/looker.svg"> </a> <button class="c-menu__close">&times;</button> </div> <ul class="no-style c-menu__items"> <li class="c-menu__item"> <a class="toggle-button c-menu__link" data-name="mobile-dd1">product <span class="mobile-icon fa fa-chevron-down"></span></a> <ul class="c-menu__items mobile-dd no-margin" id="mobile-dd1"> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/product/business-intelligence">Business Intelligence</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/product/embedded-analytics">Embedded Analytics</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/product/applications">Applications</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/product/looker-difference">The Looker Difference</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/product/new-features">New Features</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/product/visualizations">Visualizations</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/professional-services">Professional Services</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/product/security">Security</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/product/pricing">Pricing</a> </li> </ul> </li> <li class="c-menu__item"> <a class="toggle-button c-menu__link" data-name="mobile-dd2">platform <span class="mobile-icon fa fa-chevron-down"></span></a> <ul class="c-menu__items mobile-dd no-margin" id="mobile-dd2"> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/platform/overview">Data Platform</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/platform/data-modeling">Data Modeling</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/platform/actions">Data Actions</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/platform/directory/home">Looker Blocks</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/platform/data-connections">Data Connections</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/partner-network">Partner Ecosystem</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/platform/enterprise">Looker for Enterprise</a> </li> </ul> </li> <li class="c-menu__item"> <a class="toggle-button c-menu__link" data-name="mobile-dd4">solutions <span class="mobile-icon fa fa-chevron-down"></span></a> <ul class="c-menu__items mobile-dd no-margin" id="mobile-dd4"> <li class="c-menu__item"> <a class="toggle-button c-menu__link" data-name="mobile-dd4-1">industries <span class="mobile-icon fa fa-chevron-down"></span></a> <ul class="c-menu__items mobile-ddd no-margin" id="mobile-dd4-1"> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/ecommerce">eCommerce</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/media">Media</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/ad-tech">Ad Tech</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/saas">SaaS</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/healthcare">Healthcare</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/gaming">Gaming</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/fintech">FinTech</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/retail">Retail</a> </li> </ul> </li> <li class="c-menu__item"> <a class="toggle-button c-menu__link" data-name="mobile-dd4-2">departments <span class="mobile-icon fa fa-chevron-down"></span></a> <ul class="c-menu__items mobile-ddd no-margin" id="mobile-dd4-2"> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/marketing-analytics">Marketing</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/sales-analytics">Sales</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/account-management">Account Management</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/support-analytics">Customer Support</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/data-science">Data Science</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/product-analytics">Product</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/operation-logistics">Operations and Logistics</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/web-analytics">Web Analytics</a> </li> </ul> </li> <li class="c-menu__item"> <a class="toggle-button c-menu__link" data-name="mobile-dd4-3">databases <span class="mobile-icon fa fa-chevron-down"></span></a> <ul class="c-menu__items mobile-ddd no-margin" id="mobile-dd4-3"> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/amazon-redshift">Amazon Redshift</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/google-bigquery">Google BigQuery</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/snowflake">Snowflake</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/ibm-db2-warehouse-on-cloud">IBM Db2 Warehouse on Cloud</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/solutions/databases">All Databases</a> </li> </ul> </li> </ul> </li> <li class="c-menu__item"> <a class="toggle-button c-menu__link" data-name="mobile-dd6">learn <span class="mobile-icon fa fa-chevron-down"></span></a> <ul class="c-menu__items mobile-dd no-margin" id="mobile-dd6"> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/guide">User Guide</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/guide/getting-started">Getting Started</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="https://web.archive.org/web/20210411153050/https://help.looker.com/">Help Center</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="https://web.archive.org/web/20210411153050/https://docs.looker.com/">Documentation</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="https://web.archive.org/web/20210411153050/https://community.looker.com/">Community</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="https://web.archive.org/web/20210411153050/https://training.looker.com/">Training</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="/web/20210411153050/https://looker.com/certification">Certification</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="https://web.archive.org/web/20210411153050/https://info.looker.com/whitepapers">Whitepapers</a> </li> <li class="c-menu__item"> <a class="c-menu__link" href="https://web.archive.org/web/20210411153050/https://info.looker.com/analyst-reports">Analyst Reports</a> </li> </ul> </li> <div class="mobile-mp"> <!--mp_global_switch_begins--> <a mporgnav id="mp-m" class="user-locale toggle-button c-menu__link" title="Global Switch" style="padding: 15px"> <img src="/web/20210411153050im_/https://looker.com/assets/img/images/icons/globe_grey.png" style="width:20px"> </a> <!--mp_global_switch_ends--> </div> <div class="center-align"> <a href="/web/20210411153050/https://looker.com/demo" class="btn primary margin-top--20"> Request a demo </a> </div> </ul> </div> <div id="c-mask" class="c-mask"></div><!-- /c-mask --> <!--mp_easylink_begins--> <script nonce="Q87E9FL4A5T3BRMDJ" type="text/javascript" id="mpelid" src="//web.archive.org/web/20210411153050js_/https://lookercom.mpeasylink.com/mpel/mpel.js" async></script> <!--mp_easylink_ends--> <style> body {margin-top: 60px;} </style> <script nonce="Q87E9FL4A5T3BRMDJ"> document.getElementById('mp').onclick = function(){ chooser(); } document.getElementById('mp-m').onclick = function(){ chooser(); } function chooser(){ var script=document.createElement('SCRIPT'); script.src='https://web.archive.org/web/20210411153050/https://lookercom.mpeasylink.com/mpel/mpel_chooser.js'; document.body.appendChild(script); return false; } </script> <div class="container"> <div class="breadcrumbs"> <p> <a href="/web/20210411153050/https://looker.com/blog">blog</a> <i class="material-icons">keyboard_arrow_right</i> 7-reasons-looker-built-a-ne... </p> </div> <div class="blog-post padding-top--60 padding-bottom--30"> <h1 class="top--0"> 7 reasons Looker built a new language for data </h1> <p class="author bottom--0"> Daniel Mintz, <span class="author-title"> Chief Data Evangelist </span> </p> <p class="date top--0 padding-bottom--15"> Jan 10, 2018 </p> <div class="social"> <div class="sharethis-inline-share-buttons"></div> </div> <p>To many people, analytics tools all look the same. Some dashboards, a few reports, a way to slice data. That’s because the real differentiators lie behind the scenes, where the great tools are separated from the merely good ones (and the not so good ones).</p> <p><strong>Behind Looker’s pretty face is something quite revolutionary: LookML.</strong> And even though the vast majority of users will never see a line of LookML, this new language for data is what makes Looker uniquely powerful, agile, and trustworthy--for everyone.</p> <p>LookML has plenty of fans (<a href="/web/20210411153050/https://looker.com/blog/why-i-chose-looker">me among them</a>), but not everyone is immediately sold. When skeptics hear about LookML, they usually have one of two reactions:</p> <ol> <li>“Why invent a new data language when SQL already exists?” or</li> <li>“I have to write code (&#x1F631;&#x1F629;&#x1F62D;)? Can’t I use a graphical user interface (GUI) instead?”</li> </ol> <p>And if you’re not familiar with LookML, these questions are totally reasonable. Plenty of people have tried to replace SQL or build graphical programming languages and failed. But knowledge and understanding of that history is exactly why we’re confident this is the right path.</p> <p><strong>Firstly, it’s important to know that LookML isn’t a replacement for SQL—it’s a better way to write SQL.</strong></p> <p>That distinction is critical, because while general-purpose programming languages have proven vibrant and dynamic, the world of data languages has been pretty stagnant. Assembly became C became Java and Python and Ruby—letting programmers focus on writing great programs instead of low-level tasks like managing memory. But data languages haven’t seen the same evolution--data analysts still mostly write SQL by hand, worrying about low-level concerns <em>every time</em> they write a query.</p> <p><strong>When Lloyd Tabb, Looker’s founder, started designing LookML, he began with the belief that data languages needed to evolve.</strong> But that didn’t lead him to a graphical interface. Lloyd had seen many graphical languages, and he’d learned that they are inherently imprecise, inefficient, and bad at expressing complexity simply. That’s why they’re mainly used as teaching tools today, rather than for building production systems.</p> <p>But Lloyd’s vision for LookML wasn’t just about avoiding pitfalls, it was about making data users’ lives better. So to spell out our thinking more clearly, let me lay out seven reasons we believe LookML is a major step forward for data languages:</p> <ol> <li><p><strong>LookML is all about reusability.</strong> Programmers have a mantra: Don’t Repeat Yourself. But most data analysis is full of repeated work. You extract raw data, prepare it, deliver an analysis, and...then never use any of that work again. This is hugely inefficient, since the next analysis often involves many of the same steps. With LookML, once you define a dimension or a measure, you build on it, rather than rewriting it again and again.</p></li> <li><p><strong>It’s easy to learn.</strong> LookML is constructed around SQL, specifically because SQL is ubiquitous. That lets us tap into a huge pool of people who are already familiar with it. A graphical language would force everyone to start learning from scratch. But the basics of LookML can be picked up by SQL-speaking data analysts in a couple of hours.</p></li> <li><p><strong>LookML is version controlled.</strong> Doing data well requires tracking what was changed when, by whom, and why. But graphical languages simply don’t allow that kind of modern version control. Previous attempts to incorporate version control into data systems have been clunky, proprietary, and have actually impeded collaboration. LookML provides version control using Git, the programming industry standard.</p></li> <li><p><strong>It’s simple to debug.</strong> If you’ve ever tried debugging a graphical language, you know the pain of trying to untangle a bird’s nest of connectors. LookML developers benefit from a full-fledged Integrated Development Environment featuring auto-completion, error highlighting, contextual help, and a validator that helps you fix errors. None of that would be possible with a graphical language.</p></li> <li><p><strong>LookML is built for today’s complex data.</strong> Trying to “dumb down” your data tools doesn’t make complexity go away. Bad tools just make complexity harder to deal with. LookML is a powerful tool for power users that helps them capture that complexity--whether inequality joins, many-to-many relationships, multi-level aggregation, or anything else--and render it invisible to end users.</p></li> <li><p><strong>It fosters collaboration.</strong> Software developers have developed immensely powerful tools for collaborating on complex projects, and data products need these too! You can’t serve your whole company’s data needs by yourself. But SQL is inherently disorganized and impenetrable, making true collaboration impractical. LookML is architected to make collaboration natural and easy.</p></li> <li><p><strong>LookML empowers data professionals to empower others.</strong> LookML is a tool for data analysts and developers, not end users. By helping analysts get the knowledge about what their data means out of their heads and into Looker, LookML makes that knowledge available to everyone. The “data model” that Looker helps you build enables non-technical users to do their jobs--building dashboards, drilling to row-level detail, and accessing complex metrics--without having to worry about what’s behind the curtain.</p></li> </ol> <p>In short, <strong>LookML is SQL evolved.</strong> It leverages SQL’s power in a way that’s familiar to analysts, while abstracting away the low-level concerns that analysts usually have to manage.</p> <p>It’s a powerful language with a huge community of developers who support each other. The pre-built analyses they share--to help integrate Salesforce data, build a cohort analysis, or model weather data--will give you a huge head start on common analytic tasks.</p> <p>Finally, it’s a living language that’s constantly growing--adding new features, dialects, and integrations. <strong>So as data, databases, and data analysts change, LookML will be there to meet them.</strong></p> <div class="post-arrows padding-top--30"> <a href="/web/20210411153050/https://looker.com/blog/announcing-join-the-tour" class="float-right">Next</a> <a href="/web/20210411153050/https://looker.com/blog/five-favorite-reads-from-2017" class="float-left">Previous </a> <div style="clear:both"></div> </div> </div> <div class="horizontal-cta grey-200-bg center-align border-full border-radius--8"> <h4 class="alt padding-bottom--30" id="blog-subscribe-heading">Subscribe for the latest posts</h4> <h4 class="alt padding-top--15 padding-bottom--15" id="confirmform" style="display:none">Thank You</h4> <script nonce="Q87E9FL4A5T3BRMDJ" src="//web.archive.org/web/20210411153050js_/https://discover.looker.com/js/forms2/js/forms2.min.js"></script> <form id="mktoForm_3161"></form> <script nonce="Q87E9FL4A5T3BRMDJ"> MktoForms2.loadForm("//web.archive.org/web/20210411153050/https://discover.looker.com", "131-VDZ-197", 3161, function(form) { $('#Email').each(function() { $(this).attr("placeholder", ($(this).prop("title")) ); }); form.onSuccess(function(values, followUpUrl){ form.getFormElem().hide(); document.getElementById('blog-subscribe-heading').style.display = 'none'; document.getElementById('confirmform').style.display = 'block'; return false; }); }); </script> </div> <style> .horizontal-cta { padding: 30px 30px 15px; margin: 30px auto; width: 100%; max-width: 900px; } #mktoForm_3161 .mktoFormRow:first-of-type, #mktoForm_3161 .mktoFormRow #Email { width: 100% !important; height: 40px; } #mktoForm_3161 { width: 100% !important; max-width: 500px !important; margin: 0 auto; } #mktoForm_3161 .mktoButtonRow { text-align: center !important; width: 100%; float: none; } .mktoForm .mktoButtonWrap .mktoButton { background: #5a2fc2 !important; border-radius: 0 !important; padding: 10px 20px !important; margin-top: 30px; font-family: 'circular' !important; font-size: 16px !important; display: none; } .mktoForm .mktoButtonWrap .mktoButton:hover { background: #3d2084 !important; } .mktoForm input[type=email], .mktoForm .mktoField { font-size: 16px; padding: 10px !important; } .mktoForm input[type=text], .mktoForm input[type=url], .mktoForm input[type=email], .mktoForm input[type=tel], .mktoForm input[type=number], .mktoForm input[type=date], .mktoForm select.mktoField, .mktoForm textarea.mktoField { border: 1px solid #DADCE0; border-radius: 4px; } ::-webkit-input-placeholder { /* WebKit, Blink, Edge */ color: #6a6e73; } :-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: #6a6e73; opacity: 1; } ::-moz-placeholder { /* Mozilla Firefox 19+ */ color: #6a6e73; opacity: 1; } :-ms-input-placeholder { /* Internet Explorer 10-11 */ color: #6a6e73; } </style> </div> <section class="grey-200-bg responsive-padding padding-bottom--60 margin-top--60"> <div class="container"> <h3 class="h2 margin-bottom--45 center-align"> Recent posts </h3> <div class="blog-small-container recent-posts"> <a href="/web/20210411153050/https://looker.com/blog/qventus-customer-story-supports-hospitals-big-data-covid" class="past-blog2 recent-posts shadow-hover border-full border-radius--8"> <img src="/web/20210411153050im_/https://looker.com/assets/img/images/blog/blank.png" data-src="/assets/img/images/blog/2021/04/qventus/social.png"> <p class="category padding-top--15"> Data Stories </p> <h5 class="title"> Qventus helps hospitals plan through COVID-19 with data... </h5> <div class="bottom"> <hr class="margin-top--30 margin-bottom--15"> <p class="date top--0 bottom--0"> Apr 6, 2021 </p> <img class="" src="/web/20210411153050im_/https://looker.com/assets/img/images/system/blue_right_arrow.svg"> </div> </a> <a href="/web/20210411153050/https://looker.com/blog/big-data-strategy-government-sector" class="past-blog2 recent-posts shadow-hover border-full border-radius--8"> <img src="/web/20210411153050im_/https://looker.com/assets/img/images/blog/blank.png" data-src="/assets/img/images/blog/2021/04/modernization/social.png"> <p class="category padding-top--15"> Product </p> <h5 class="title"> A modern big data strategy for vaulting federal agencies... </h5> <div class="bottom"> <hr class="margin-top--30 margin-bottom--15"> <p class="date top--0 bottom--0"> Apr 5, 2021 </p> <img class="" src="/web/20210411153050im_/https://looker.com/assets/img/images/system/blue_right_arrow.svg"> </div> </a> <a href="/web/20210411153050/https://looker.com/blog/interview-with-three-women-working-in-data" class="past-blog2 recent-posts shadow-hover border-full border-radius--8"> <img src="/web/20210411153050im_/https://looker.com/assets/img/images/blog/blank.png" data-src="/assets/img/images/blog/2021/03/wod_cca/social.png"> <p class="category padding-top--15"> Data Stories </p> <h5 class="title"> Women of Data: the data science team at Commonwealth Care... </h5> <div class="bottom"> <hr class="margin-top--30 margin-bottom--15"> <p class="date top--0 bottom--0"> Mar 22, 2021 </p> <img class="" src="/web/20210411153050im_/https://looker.com/assets/img/images/system/blue_right_arrow.svg"> </div> </a> </div> </div> </section> <!-- @@@@@@@@@@@@@ SCRIPT TAGS @@@@@@@@@@@@@ --> <!-- scripts --> <script nonce="Q87E9FL4A5T3BRMDJ" src="/web/20210411153050js_/https://looker.com/site/themes/surf_verve/js/all-scripts_v0003.js"></script> <script nonce="Q87E9FL4A5T3BRMDJ"> window.addEventListener('load', function(){ var allimages= document.getElementsByTagName('img'); for (var i=0; i<allimages.length; i++) { if (allimages[i].getAttribute('data-src')) { allimages[i].setAttribute('src', allimages[i].getAttribute('data-src')); } } }, false) </script> </div> <!--FOOTER--> <footer class="new-site-footer border-top" data-swiftype-index="false"> <div class=""> <div class="social-icons container border-bottom"> <p class="small-text inline"> Follow us on: </p> <div class="inline"> <a class="fa fa-lg fa-facebook" target="_blank" rel="noreferer noopener" href="https://web.archive.org/web/20210411153050/https://www.facebook.com/LookerData/"></a> <a class="fa fa-lg fa-twitter" target="_blank" rel="noreferer noopener" href="https://web.archive.org/web/20210411153050/https://twitter.com/LookerData"></a> <a class="fa fa-lg fa-linkedin" target="_blank" rel="noreferer noopener" href="https://web.archive.org/web/20210411153050/https://www.linkedin.com/company/looker"></a> <a class="fa fa-lg fa-youtube-play" target="_blank" rel="noreferer noopener" href="https://web.archive.org/web/20210411153050/https://www.youtube.com/user/LookerData"></a> </div> </div> <div class="container footer-link-section"> <div class="footer-sections container-full-width"> <div class="f-one"> <p class="toggle-button h7" data-name="footer-one"> Product<span class="fa fa-chevron-down"></span> </p> <div class="links" id="footer-one"> <p><a href="/web/20210411153050/https://looker.com/product/business-intelligence" class="footer-nav-gtm">Business Intelligence</a></p> <p><a href="/web/20210411153050/https://looker.com/product/embedded-analytics" class="footer-nav-gtm">Embedded Analytics</a></p> <p><a href="/web/20210411153050/https://looker.com/product/applications" class="footer-nav-gtm">Applications</a></p> <p><a href="/web/20210411153050/https://looker.com/product/looker-difference" class="footer-nav-gtm">The Looker Difference</a></p> <p><a href="/web/20210411153050/https://looker.com/product/new-features" class="footer-nav-gtm">New Features</a></p> <p><a href="/web/20210411153050/https://looker.com/product/visualizations" class="footer-nav-gtm">Visualizations</a></p> <p><a href="/web/20210411153050/https://looker.com/professional-services" class="footer-nav-gtm">Professional Services</a></p> <p><a href="/web/20210411153050/https://looker.com/product/security" class="footer-nav-gtm">Security</a></p> <p><a href="/web/20210411153050/https://looker.com/product/pricing" class="footer-nav-gtm">Pricing</a></p> </div> </div> <div class="f-two"> <p class="toggle-button h7" data-name="footer-two"> Platform<span class="fa fa-chevron-down"></span> </p> <div class="links" id="footer-two"> <p><a href="/web/20210411153050/https://looker.com/platform/overview" class="footer-nav-gtm">Data Platform</a></p> <p><a href="/web/20210411153050/https://looker.com/platform/data-modeling" class="footer-nav-gtm">Data Modeling</a></p> <p><a href="/web/20210411153050/https://looker.com/platform/actions" class="footer-nav-gtm">Data Actions</a></p> <p><a href="/web/20210411153050/https://looker.com/platform/directory/home" class="footer-nav-gtm">Looker Blocks</a></p> <p><a href="/web/20210411153050/https://looker.com/platform/data-connections" class="footer-nav-gtm">Data Connections</a></p> <p><a href="/web/20210411153050/https://looker.com/solutions" class="footer-nav-gtm">Solutions</a></p> <p><a href="/web/20210411153050/https://looker.com/partner-network" class="footer-nav-gtm">Partner Ecosystem</a></p> <p><a href="/web/20210411153050/https://looker.com/platform/enterprise" class="footer-nav-gtm">Looker for Enterprise</a></p> </div> </div> <div class="f-four"> <p class="toggle-button h7" data-name="footer-four"> Learn<span class="fa fa-chevron-down"></span> </p> <div class="links" id="footer-four"> <p><a href="/web/20210411153050/https://looker.com/guide">User Guide</a></p> <p><a href="/web/20210411153050/https://looker.com/guide/getting-started" class="footer-nav-gtm">Getting Started</a></p> <p><a href="https://web.archive.org/web/20210411153050/https://help.looker.com/" class="footer-nav-gtm">Help Center</a></p> <p><a href="https://web.archive.org/web/20210411153050/https://docs.looker.com/" class="footer-nav-gtm">Documentation</a></p> <p><a href="https://web.archive.org/web/20210411153050/https://community.looker.com/" class="footer-nav-gtm">Community</a></p> <p><a href="https://web.archive.org/web/20210411153050/https://training.looker.com/" class="footer-nav-gtm">Training</a></p> <p><a href="/web/20210411153050/https://looker.com/certification" class="footer-nav-gtm">Certification</a></p> <p><a href="https://web.archive.org/web/20210411153050/https://info.looker.com/whitepapers" class="footer-nav-gtm">Whitepapers</a></p> <p><a href="https://web.archive.org/web/20210411153050/https://info.looker.com/analyst-reports" class="footer-nav-gtm">Analyst Reports</a></p> </div> </div> <div class="f-five"> <p class="toggle-button h7" data-name="footer-five"> Engage<span class="fa fa-chevron-down"></span> </p> <div class="links" id="footer-five"> <p><a href="/web/20210411153050/https://looker.com/blog">Blog</a></p> <p><a href="/web/20210411153050/https://looker.com/events" class="footer-nav-gtm">Events</a></p> <p><a href="/web/20210411153050/https://looker.com/customers" class="footer-nav-gtm">Customers</a></p> <p><a href="https://web.archive.org/web/20210411153050/https://info.looker.com/webinars" class="footer-nav-gtm">On-demand Webinars</a></p> <p><a href="https://web.archive.org/web/20210411153050/https://careers.google.com/jobs/results/?company=Google&amp;hl=en_US&amp;jlo=en_US&amp;q=looker,%20google%20cloud&amp;sort_by=relevance" target="_blank" rel="noreferer noopener" class="footer-nav-gtm">Careers</a></p> <p><a href="/web/20210411153050/https://looker.com/trust-center" class="footer-nav-gtm">Trust Center</a></p> <p><a href="/web/20210411153050/https://looker.com/contact" class="footer-nav-gtm">Contact</a></p> </div> </div> </div> </div> </div> <div class="footer-meta center-align white"> <div class="container"> <div class="left"> <p class="">&copy; <script nonce="Q87E9FL4A5T3BRMDJ">document.write(new Date().getFullYear())</script> Looker Data Sciences, Inc.</p> </div> <div class="right"> <p> <a href="/web/20210411153050/https://looker.com/privacy">Privacy</a> | <a href="/web/20210411153050/https://looker.com/terms">Terms</a> | <a href="/web/20210411153050/https://looker.com/trust-center/privacy/cookies">Cookies</a> </p> </div> </div> </div> </footer> <!--FOOTER--> <!--FOOTER JS--> <script nonce="Q87E9FL4A5T3BRMDJ"> $(document).ready(function() { ww = window.innerWidth; adjustFooterNav(); }); $(window).bind('resize orientationchange', function() { ww = window.innerWidth; adjustFooterNav(); }); var adjustFooterNav = function() { if ( ww > 960 ) { $('.links').show(); $('.footer-link-section .fa').removeClass('fa-chevron-up').addClass('fa-chevron-down'); } else { if ($('.f-one .fa').hasClass('fa-chevron-up')) { $('.f-one .links').show(); } else if ($('.f-two .fa').hasClass('fa-chevron-up')) { $('.f-two .links').show(); } else if ($('.f-three .fa').hasClass('fa-chevron-up')) { $('.f-three .links').show(); } else if ($('.f-four .fa').hasClass('fa-chevron-up')) { $('.f-four .links').show(); } else if ($('.f-five .fa').hasClass('fa-chevron-up')) { $('.f-five .links').show(); } else { $('.links').hide(); } } }; </script><!--FOOTER JS--> <!--EXIT POPUP--> <div class="exit-popup" id="intellimize-exit-popup" style="display:none"> <a href="#exit-popup" class="html5lightbox lb-trigger" data-width="600" data-height="500"></a> <div id="exit-popup" style="display:none"> <div class="exit-intent-image-left-module"> <div class="inner center-align"> <h2 class="headline3"> You can afford to stay </h2> <p> Get more value out of your data. Looker has the features your business needs at a price that fits. Request a quote today. </p> <div> <a href="/web/20210411153050/https://looker.com/product/pricing" class="btn primary margin-top--30"> Request a quote </a> </div> </div> </div> </div> </div> <!--EXIT POPUP--> <style> .exit-intent-image-left-module .inner { padding: 30px; } @media all and (max-width:768px){ .exit-intent-image-left-module .inner { padding: 30px 15px; } } </style> <script nonce="Q87E9FL4A5T3BRMDJ"> $(document).ready(function() { if (navigator.userAgent.match(/(iPad)/)) { // main menu hover function $('#mm-link1').click(function(){ $(".m-menu").hide(); $("#mega-menu1").toggle(); }); $('#mm-link2').click(function(){ $(".m-menu").hide(); $("#mega-menu2").toggle(); }); $('#mm-link3').click(function(){ $(".m-menu").hide(); $("#mega-menu3").toggle(); }); $('#mm-link4').click(function(){ $(".m-menu").hide(); $("#mega-menu4").toggle(); }); $('#mm-link5').click(function(){ $(".m-menu").hide(); $("#mega-menu5").toggle(); }); $('#mm-link6').click(function(){ $(".m-menu").hide(); $("#mega-menu6").toggle(); }); } else { $('#mm-link1').hover(function(e){ $(".m-menu").hide(); $("#mega-menu1").show(); }, function(e){ $(".m-menu").hide(); e.preventDefault(); }); $('#mm-link2').hover(function(e){ $(".m-menu").hide(); $("#mega-menu2").show(); }, function(e){ $(".m-menu").hide(); e.preventDefault(); }); $('#mm-link3').hover(function(e){ $(".m-menu").hide(); $("#mega-menu3").show(); }, function(e){ $(".m-menu").hide(); e.preventDefault(); }); $('#mm-link4').hover(function(e){ $(".m-menu").hide(); $("#mega-menu4").show(); }, function(e){ $(".m-menu").hide(); e.preventDefault(); }); $('#mm-link5').hover(function(e){ $(".m-menu").hide(); $("#mega-menu5").show(); }, function(e){ $(".m-menu").hide(); e.preventDefault(); }); $('#mm-link6').hover(function(e){ $(".m-menu").hide(); $("#mega-menu6").show(); }, function(e){ $(".m-menu").hide(); e.preventDefault(); }); } }); (function(window) { 'use strict'; /** * Extend Object helper function. */ function extend(a, b) { for(var key in b) { if(b.hasOwnProperty(key)) { a[key] = b[key]; } } return a; } /** * Each helper function. */ function each(collection, callback) { for (var i = 0; i < collection.length; i++) { var item = collection[i]; callback(item); } } /** * Menu Constructor. */ function Menu(options) { this.options = extend({}, this.options); extend(this.options, options); this._init(); } /** * Menu Options. */ Menu.prototype.options = { wrapper: '#o-wrapper', // The content wrapper type: 'slide-left', // The menu type menuOpenerClass: '.c-button', // The menu opener class names (i.e. the buttons) maskId: '#c-mask' // The ID of the mask }; /** * Initialise Menu. */ Menu.prototype._init = function() { this.body = document.body; this.wrapper = document.querySelector(this.options.wrapper); this.mask = document.querySelector(this.options.maskId); this.menu = document.querySelector('#c-menu--' + this.options.type); this.closeBtn = this.menu.querySelector('.c-menu__close'); this.menuOpeners = document.querySelectorAll(this.options.menuOpenerClass); this._initEvents(); }; /** * Initialise Menu Events. */ Menu.prototype._initEvents = function() { // Event for clicks on the close button inside the menu. this.closeBtn.addEventListener('click', function(e) { e.preventDefault(); this.close(); }.bind(this)); // Event for clicks on the mask. this.mask.addEventListener('click', function(e) { e.preventDefault(); this.close(); }.bind(this)); }; /** * Open Menu. */ Menu.prototype.open = function() { this.body.classList.add('has-active-menu'); this.wrapper.classList.add('has-' + this.options.type); this.menu.classList.add('is-active'); this.mask.classList.add('is-active'); this.disableMenuOpeners(); }; /** * Close Menu. */ Menu.prototype.close = function() { this.body.classList.remove('has-active-menu'); this.wrapper.classList.remove('has-' + this.options.type); this.menu.classList.remove('is-active'); this.mask.classList.remove('is-active'); this.enableMenuOpeners(); }; /** * Disable Menu Openers. */ Menu.prototype.disableMenuOpeners = function() { each(this.menuOpeners, function(item) { item.disabled = true; }); }; /** * Enable Menu Openers. */ Menu.prototype.enableMenuOpeners = function() { each(this.menuOpeners, function(item) { item.disabled = false; }); }; /** * Add to global namespace. */ window.Menu = Menu; })(window); /* Push right instantiation and action. */ var pushRight = new Menu({ wrapper: '#o-wrapper', type: 'push-right', menuOpenerClass: '.menu-link', maskId: '#c-mask' }); var pushRightBtn = document.querySelector('#c-button--push-right'); pushRightBtn.addEventListener('click', function(e) { e.preventDefault; pushRight.open(); }); $(document).ready(function() { $('.new-nav').addClass('box-shadow'); }); // disable mobile menu at 1199px width $(window).on('resize', function(){ var win = $(this); //this = window if (win.width() >= 1199) { $('.c-menu--push-right, .c-mask').removeClass('is-active'); $('.o-wrapper').removeClass('has-push-right'); $('.site').removeClass('has-active-menu'); } }); </script> <!-- script for swiftype search --> <script nonce="Q87E9FL4A5T3BRMDJ"> $('#global-search-form').on('submit', function(e) { e.preventDefault(); var search = $('#global-searchbox').val(); location.href = '/search-results#stq=' + search + '&stp=1'; }); $('#global-search-form-small').on('submit', function(e) { e.preventDefault(); var search = $('#global-searchbox-small').val(); location.href = '/search-results#stq=' + search + '&stp=1'; }); </script> <!-- GLOBAL NAV SEARCH --> <script nonce="Q87E9FL4A5T3BRMDJ"> // open large screens $(".search-trigger-large").click(function(){ $(".search-trigger-large").hide(); $("#menu").hide(); $(".form-container-large").css("display", "flex"); $(".form-container-large").css("display", "-webkit-flex"); setTimeout(function(){ $(".form-container-large").addClass('grow'); }, 10); }); // close large screens $(".search-close-large").click(function(){ $(".search-trigger-large").show(); $("#menu").show(); $(".form-container-large").hide(); $(".form-container-large").removeClass('grow'); }); // open small screens $(".search-trigger-small").click(function(){ $(".search-trigger-small").hide(); $(".hamburger").hide(); $(".logo-nav").hide(); $("#global-search-form-small").css("display", "-webkit-flex"); setTimeout(function(){ $("#global-search-form-small").addClass('grow'); }, 10); }); // close small screens $(".search-close-small").click(function(){ $(".search-trigger-small").show(); $(".hamburger").show(); $(".logo-nav").show(); $("#global-search-form-small").hide(); $("#global-search-form-small").removeClass('grow'); }); // force small screens search close $(document).ready(function(){ $(window).bind('resize orientationchange', function() { ww = window.innerWidth; adjustMenu(); }); var adjustMenu = function() { if (ww > 1199) { $(".search-close-small").trigger("click"); } else { $(".search-close-large").trigger("click"); } }; }); </script> <script nonce="Q87E9FL4A5T3BRMDJ"> $(".mobile-mp .user-locale").click(function(){ window.scrollTo(0, 0); }); </script> <script nonce="Q87E9FL4A5T3BRMDJ"> $(document).ready(function() { // show/hide function $('.toggle-button').click(function(e){ id = $(this).attr('data-name'); if ($(this).find('span').hasClass('fa-chevron-down')){ $(this).find('span').removeClass('fa-chevron-down'); $(this).find('span').addClass('fa-chevron-up'); }else{ $(this).find('span').removeClass('fa-chevron-up'); $(this).find('span').addClass('fa-chevron-down'); } $("#"+id).slideToggle('200'); e.preventDefault(); }); // show/hide function $('.toggle-button2').click(function(e){ id = $(this).attr('data-name'); if ($(this).find('span').hasClass('fa-chevron-down')){ $(this).find('span').removeClass('fa-chevron-down'); $(this).find('span').addClass('fa-chevron-up'); }else{ $(this).find('span').removeClass('fa-chevron-up'); $(this).find('span').addClass('fa-chevron-down'); } $("#"+id).slideToggle('200'); e.preventDefault(); }); // button toggle function $('.button-toggle').click(function() { $('.button-toggle-div').slideToggle(); $('.button-toggle-text').toggle(); $('.button-toggle-text2').toggle(); }); // text toggle function $('.text-toggle').click(function() { $('.text-toggle-div').toggleClass('visible'); $('.text-toggle-text').toggle(); $('.text-toggle-text2').toggle(); }); $('.text-toggle-2').click(function() { $('.text-toggle-div-2').toggleClass('visible'); $('.text-toggle-text-2').toggle(); $('.text-toggle-text2-2').toggle(); }); $('.text-toggle-3').click(function() { $('.text-toggle-div-3').toggleClass('visible'); $('.text-toggle-text-3').toggle(); $('.text-toggle-text2-3').toggle(); }); //add superscript to all registered copyright $('body :not(script)').contents().filter(function() { return this.nodeType === 3; }).replaceWith(function() { return this.nodeValue.replace(/[™®©]/g, '<sup>$&</sup>'); }); }); </script> <!-- Google Tag Manager --> <script nonce="Q87E9FL4A5T3BRMDJ">(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//web.archive.org/web/20210411153050/https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-NWWX6K');</script> <!-- End Google Tag Manager --> <!-- Google Tag Manager noscript--> <noscript><iframe src="//web.archive.org/web/20210411153050if_/https://www.googletagmanager.com/ns.html?id=GTM-NWWX6K" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager noscript--> </body> </html> <!-- FILE ARCHIVED ON 15:30:50 Apr 11, 2021 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 11:44:41 Dec 01, 2024. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 0.673 exclusion.robots: 0.033 exclusion.robots.policy: 0.021 esindex: 0.011 cdx.remote: 115.689 LoadShardBlock: 1224.852 (3) PetaboxLoader3.datanode: 326.653 (4) PetaboxLoader3.resolve: 4258.636 (2) load_resource: 3473.63 -->

Pages: 1 2 3 4 5 6 7 8 9 10