Bug in date handling by LAB Faster Custom Dimensions

Im trying to do a diff_days(inventory_item.issued_date (timeframe group field date raw field is timestamp), inventory_item.valid_until (date db)
Without the lab function it generates this:

CAST(CASE WHEN (UNIX_TIMESTAMP((CAST(CAST(DATE_FORMAT(inventory_item.issued_at , 'yyyy-MM-dd') AS DATE) AS TIMESTAMP))) - UNIX_TIMESTAMP((CAST(CAST(DATE_FORMAT(inventory_item.valid_until , 'yyyy-MM-dd') AS DATE) AS TIMESTAMP)))) / (60 * 60 * 24) < 0 THEN CEILING((UNIX_TIMESTAMP((CAST(CAST(DATE_FORMAT(inventory_item.issued_at , 'yyyy-MM-dd') AS DATE) AS TIMESTAMP))) - UNIX_TIMESTAMP((CAST(CAST(DATE_FORMAT(inventory_item.valid_until , 'yyyy-MM-dd') AS DATE) AS TIMESTAMP)))) / (60 * 60 * 24)) ELSE FLOOR((UNIX_TIMESTAMP((CAST(CAST(DATE_FORMAT(inventory_item.issued_at , 'yyyy-MM-dd') AS DATE) AS TIMESTAMP))) - UNIX_TIMESTAMP((CAST(CAST(DATE_FORMAT(inventory_item.valid_until , 'yyyy-MM-dd') AS DATE) AS TIMESTAMP)))) / (60 * 60 * 24)) END AS INT) `test`,

Which returns the negative values.
With the lab function on it does this:

CAST(CASE WHEN (UNIX_TIMESTAMP((DATE_FORMAT(inventory_item.issued_at , 'yyyy-MM-dd'))) - UNIX_TIMESTAMP((DATE_FORMAT(inventory_item.valid_until , 'yyyy-MM-dd')))) / (60 * 60 * 24) < 0 THEN CEILING((UNIX_TIMESTAMP((DATE_FORMAT(inventory_item.issued_at , 'yyyy-MM-dd'))) - UNIX_TIMESTAMP((DATE_FORMAT(inventory_item.valid_until , 'yyyy-MM-dd')))) / (60 * 60 * 24)) ELSE FLOOR((UNIX_TIMESTAMP((DATE_FORMAT(inventory_item.issued_at , 'yyyy-MM-dd'))) - UNIX_TIMESTAMP((DATE_FORMAT(inventory_item.valid_until , 'yyyy-MM-dd')))) / (60 * 60 * 24)) END AS INT) `test`,

Which just returns null values. And I think its the unix_timestamp that doesn't work on a date field.
Using databricks DB. 

Protip: maybe make it more clear/easier to report bugs?

0 1 133
1 REPLY 1
Top Labels in this Space
Top Solution Authors