0:00:10.960,0:00:16.490 Jaql is a loosely typed functional language,[br]with lazy evaluation. It's part of BigInsights, 0:00:16.490,0:00:20.200 IBM's Hadoop based Big Data platform. 0:00:20.200,0:00:25.259 The initial inspiration for Jaql was a JSON[br]Query Language that provided query processing 0:00:25.259,0:00:30.470 for semi-structured data, particularly nested[br]data represented using the Jaql Data Model 0:00:30.470,0:00:32.829 or JDM 0:00:32.829,0:00:38.559 The JDM is a superset of JSON, a standard[br]data model, that is similar to XML but much 0:00:38.559,0:00:40.649 easier to work with. 0:00:40.649,0:00:47.039 Jaql provides a complete solution environment[br]and integration point for all the data storage, 0:00:47.039,0:00:53.910 functions and capabilities of BigInsights;[br]including flexible access to data and analytics. 0:00:53.910,0:00:59.510 Jaql is the functional language that glues[br]it all together. 0:00:59.510,0:01:05.800 It also provides ways to reach out to external[br]data and services such as relational databases, 0:01:05.800,0:01:10.909 indexing services, text analytics, machine[br]learning and so on. 0:01:10.909,0:01:16.200 Jaql provides an elegant programming model[br]for developing complex and reusable queries 0:01:16.200,0:01:22.460 and transformations against JSON data structures;[br]even very deeply nested data structures. 0:01:22.460,0:01:28.799 As with SQL, Jaql is a declarative query language[br]so you focus on what you want to achieve, 0:01:28.799,0:01:31.469 not how it's done. 0:01:31.469,0:01:37.829 Under the hood, Jaql automatically exploits[br]the massive parallelism of MapReduce. You 0:01:37.829,0:01:42.380 don't have to worry about the complexities[br]of MapReduce programming. 0:01:42.380,0:01:48.670 Jaql is an extensible language. It provides[br]native functions and modules, that allow you 0:01:48.670,0:01:54.500 to build up packages of re-usable logic that[br]can be shared throughout your environment. 0:01:54.500,0:01:59.810 So, when would you choose Jaql instead of[br]another language? 0:01:59.810,0:02:06.810 1. Jaql is a good choice when your data is[br]deeply nested, representing complex relationships. 0:02:08.258,0:02:14.840 Jaql can work with arbitrarily nested data[br]and can even handle data that varies in structure 0:02:14.840,0:02:17.370 and content from record to record. 0:02:17.370,0:02:23.220 2. Jaql is a good choice when you need to[br]combine programming models because it offers 0:02:23.220,0:02:30.150 both the core Jaql syntax and you can embed[br]SQL within your Jaql – that's like combining 0:02:30.150,0:02:32.710 Hive and Pig together into one language 0:02:32.710,0:02:39.710 3. Jaql is a good choice when you need a modular[br]language that lets you write native functions. 0:02:40.270,0:02:46.410 You can parameterize and encapsulate any functionality[br]of the language. and then package those functions 0:02:46.410,0:02:51.100 into reusable modules to be shared across[br]all of your applications. 0:02:51.100,0:02:58.100 4. Jaql is also a good choice when you need[br]a full programming language with both flow-control 0:02:58.680,0:03:04.320 and native functions and modules. You can[br]develop full programs from the ground up using 0:03:04.320,0:03:09.410 JAQL without requiring the use of another[br]programming language to orchestrate your logic, 0:03:09.410,0:03:16.410 which is particularly important for data flows.