JSFiddle - React, Tailwind, and code Playground

Get time differences for datalake events.

by Nalin Sajwan

HTML

<script src="https://momentjs.com/downloads/moment.min.js"></script>

JavaScript

const timings = [
  [ 'Order Snapshot → Enrich Order', '2021-08-10T18:19:06.389+05:30', '2021-08-10T18:19:10.102+05:30' ],
  [ 'Enrich order → S3 Datalake', '2021-08-10T18:19:10.102+05:30', '2021-08-10T18:19:12.780+05:30' ],
  [ 'S3 Datalake → Raw crawler (invoke)', '2021-08-10T18:19:12.780+05:30', '2021-08-10T18:19:19.260+05:30' ],
  [ 'Raw crawler → Raw catalog', '2021-08-10T18:19:19.260+05:30', '2021-08-10T18:19:59.841+05:30' ],
  [ 'Raw catalog → ETL initiates', '2021-08-10T18:19:59.841+05:30', '2021-08-10T18:20:42.582+05:30' ],
  [ 'ETL script → Processed S3 datalake', '2021-08-10T18:20:42.582+05:30', '2021-08-10T18:22:23.939+05:30' ],
  [ 'Parquet crawler → Parquet catalog', '2021-08-10T18:22:20.891+05:30', '2021-08-10T18:22:57.984+05:30' ],
];

timings.forEach(data => {
  const start = moment(data[1]);
  const end = moment(data[2]);
  
  console.log(`${data[0]}\t${end.diff(start, 'seconds', true)}`);
})

const processStart = moment(timings[0][1]);
const processEnd = moment(timings[timings.length - 1][2]);
const totalTime = processEnd.diff(processStart, 'seconds', true);

console.log(`\nTotal time: ${totalTime} seconds or ${parseInt(totalTime / 60)} min ${totalTime % 60} seconds`)