datediff at row levels

Hello,

I'm doing analysis of our repetitive customers. I want to create a calculation that will show the days difference between order 1 and order 2 based on the company. Each order has its own row. I created rank column, that assigns 1 to first order, 2 to the second etc… How can I create a calculation that will subtract date of order 2 for company x from order 1 for company x?

Thank you

Best Answers

  • CKunz
    CKunz Domo Employee
    edited April 2023 Answer ✓

    @zuchu
    You should be able to do this using the Pivot tile in Magic ETL.

    You can find more information in our Knowledge Base article:


    Basically, you can pivot the rows based on their order number, which will create new columns for each order. You can then use the DATEDIFF formula with Order 1, Order 2.

    Here are a few screenshots that walks through those steps with very simple dummy data:

    Starting Data:

    Pivot Tile:

    Output Data:


    Hope this answers your question!

  • ST_Superman
    ST_Superman Domo Employee
    Answer ✓

    I think that this would need to be done in the same ETL that you are using to add the order rank. Once you have each companies orders ranked in ascending order, then you would want to use a rank/window function to create a "Prior Order Date" field. This would be done by using a LAG function offset by 1 row and partitioned by Company. You can then use DATEDIFF(`Order Date`,`Prior Order Date`)

Answers

  • CKunz
    CKunz Domo Employee
    edited April 2023 Answer ✓

    @zuchu
    You should be able to do this using the Pivot tile in Magic ETL.

    You can find more information in our Knowledge Base article:


    Basically, you can pivot the rows based on their order number, which will create new columns for each order. You can then use the DATEDIFF formula with Order 1, Order 2.

    Here are a few screenshots that walks through those steps with very simple dummy data:

    Starting Data:

    Pivot Tile:

    Output Data:


    Hope this answers your question!

  • ST_Superman
    ST_Superman Domo Employee
    Answer ✓

    I think that this would need to be done in the same ETL that you are using to add the order rank. Once you have each companies orders ranked in ascending order, then you would want to use a rank/window function to create a "Prior Order Date" field. This would be done by using a LAG function offset by 1 row and partitioned by Company. You can then use DATEDIFF(`Order Date`,`Prior Order Date`)