5. Transactions

Use the SQL code below and change {{projectId}} and {{datasetName}} to your own.

#Transactions object

  #Set the input data for the calculation

  WITH input AS
    (
      SELECT
          PARSE_DATE('%Y%m%d','20220901') AS date_start,
          PARSE_DATE('%Y%m%d','20220930') AS date_end,
          7 AS tdw, #Transaction deduplication window          
          'Europe/Kiev' AS timezone
    ),   
    
  #Selecting transactions from streaming
    transactions_web AS 
      (
        SELECT
          * EXCEPT(RN)
        FROM
          (
            SELECT
              date,    
              pseudo_session_id,
              events.timestamp as time,  
              events.transaction_id AS transactionId,
              events.transactionRevenue AS transactionRevenue,
              CAST(null AS STRING) AS status,
              "WEB" AS touchpoint,            
              ROW_NUMBER () OVER (PARTITION BY events.transaction_id ORDER BY events.timestamp ASC) AS RN
            FROM input AS i, `{{projectId}}.{{datasetName}}._temp_sessions`,
            UNNEST (events) as events 
            WHERE 
              date BETWEEN DATE_SUB(i.date_start, INTERVAL tdw DAY) AND i.date_end
          
          )
        WHERE RN=1  
      )

    SELECT 
      date,
      pseudo_session_id,
      transactionId,
      transactionRevenue,
      status,
      touchpoint,
    FROM transactions_web

 

You will get the data in the table 'transactions' with the schema below:

Field name Type  
date DATE  
pseudo_session_id STRING  
transactionId STRING  
transactionRevenue FLOAT  
status STRING  
touchpoint STRING  

 

Was this article helpful?
0 out of 0 found this helpful
Have more questions? Submit a request

0 Comments

Please sign in to leave a comment.