source_db: snowflake
dim_table: dim_imprint
export_sql: >-
  SELECT
    dr.imprint,
    dr.labelId,
    subaccountId
  FROM {db}.{schema}.dim_release dr
  GROUP BY dr.imprint, dr.labelId, subaccountId
insert_sql:
  - >-
    INSERT INTO
      {db}.{schema}.{dim_table}
      (
        imprint,
        labelid,
        last_updated,
        date_created,
        subaccountid
      )
    SELECT
      st.imprint,
      st.labelId,
      '{current_timestamp}' as last_updated,
      '{current_timestamp}' as date_created,
      st.subaccountId
    FROM
      {db}.{schema}.{staging_table} st
    LEFT JOIN
      {db}.{schema}.{dim_table} di
    ON
      di.imprint = st.imprint AND
      di.labelId = st.labelId AND
      (
        (di.subaccountId = st.subaccountId and di.subaccountId is not null) OR
        (di.subaccountId is null and st.subaccountId is null))
    WHERE di.imprintId IS NULL
related_sql:
  - >-
    UPDATE
      {db}.{schema}.dim_release
    SET
      imprintId = di.imprintId
    FROM
      {db}.{schema}.dim_imprint di
    WHERE
      ({db}.{schema}.dim_release.imprintId is NULL OR {db}.{schema}.dim_release.imprintId != di.imprintId) AND
      {db}.{schema}.dim_release.labelId = di.labelid AND
      {db}.{schema}.dim_release.imprint = di.imprint AND
      (
        (
          {db}.{schema}.dim_release.subaccountId = di.subaccountid AND
          di.subaccountid IS NOT NULL
        ) OR
        ({db}.{schema}.dim_release.subaccountId IS NULL AND di.subaccountid IS NULL)
      )
