Understanding Dynamic Time Warping - The Databricks Blog