1 00:00:10,960 --> 00:00:16,490 Jaql is a loosely typed functional language, with lazy evaluation. It's part of BigInsights, 2 00:00:16,490 --> 00:00:20,200 IBM's Hadoop based Big Data platform. 3 00:00:20,200 --> 00:00:25,259 The initial inspiration for Jaql was a JSON Query Language that provided query processing 4 00:00:25,259 --> 00:00:30,470 for semi-structured data, particularly nested data represented using the Jaql Data Model 5 00:00:30,470 --> 00:00:32,829 or JDM 6 00:00:32,829 --> 00:00:38,559 The JDM is a superset of JSON, a standard data model, that is similar to XML but much 7 00:00:38,559 --> 00:00:40,649 easier to work with. 8 00:00:40,649 --> 00:00:47,039 Jaql provides a complete solution environment and integration point for all the data storage, 9 00:00:47,039 --> 00:00:53,910 functions and capabilities of BigInsights; including flexible access to data and analytics. 10 00:00:53,910 --> 00:00:59,510 Jaql is the functional language that glues it all together. 11 00:00:59,510 --> 00:01:05,800 It also provides ways to reach out to external data and services such as relational databases, 12 00:01:05,800 --> 00:01:10,909 indexing services, text analytics, machine learning and so on. 13 00:01:10,909 --> 00:01:16,200 Jaql provides an elegant programming model for developing complex and reusable queries 14 00:01:16,200 --> 00:01:22,460 and transformations against JSON data structures; even very deeply nested data structures. 15 00:01:22,460 --> 00:01:28,799 As with SQL, Jaql is a declarative query language so you focus on what you want to achieve, 16 00:01:28,799 --> 00:01:31,469 not how it's done. 17 00:01:31,469 --> 00:01:37,829 Under the hood, Jaql automatically exploits the massive parallelism of MapReduce. You 18 00:01:37,829 --> 00:01:42,380 don't have to worry about the complexities of MapReduce programming. 19 00:01:42,380 --> 00:01:48,670 Jaql is an extensible language. It provides native functions and modules, that allow you 20 00:01:48,670 --> 00:01:54,500 to build up packages of re-usable logic that can be shared throughout your environment. 21 00:01:54,500 --> 00:01:59,810 So, when would you choose Jaql instead of another language? 22 00:01:59,810 --> 00:02:06,810 1. Jaql is a good choice when your data is deeply nested, representing complex relationships. 23 00:02:08,258 --> 00:02:14,840 Jaql can work with arbitrarily nested data and can even handle data that varies in structure 24 00:02:14,840 --> 00:02:17,370 and content from record to record. 25 00:02:17,370 --> 00:02:23,220 2. Jaql is a good choice when you need to combine programming models because it offers 26 00:02:23,220 --> 00:02:30,150 both the core Jaql syntax and you can embed SQL within your Jaql – that's like combining 27 00:02:30,150 --> 00:02:32,710 Hive and Pig together into one language 28 00:02:32,710 --> 00:02:39,710 3. Jaql is a good choice when you need a modular language that lets you write native functions. 29 00:02:40,270 --> 00:02:46,410 You can parameterize and encapsulate any functionality of the language. and then package those functions 30 00:02:46,410 --> 00:02:51,100 into reusable modules to be shared across all of your applications. 31 00:02:51,100 --> 00:02:58,100 4. Jaql is also a good choice when you need a full programming language with both flow-control 32 00:02:58,680 --> 00:03:04,320 and native functions and modules. You can develop full programs from the ground up using 33 00:03:04,320 --> 00:03:09,410 JAQL without requiring the use of another programming language to orchestrate your logic, 34 00:03:09,410 --> 00:03:16,410 which is particularly important for data flows.