<?xml version="1.0" encoding="UTF-8"?>
<changelog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.liquigraph.org/schema/1.0/liquigraph.xsd">
    <changeset id="YT-308_backfill_subaccounts:1" author="ayermakov">
        <query>
            CALL apoc.periodic.iterate(
                '
                    WITH "
                        SELECT DISTINCT
                          v.channel_id,
                          dr.subaccountid as subaccount_id
                        FROM facts.prod.staging_raw_youtube_video_report v
                        LEFT JOIN orchard_app_reporting_v2.art_relations_prod_art_relations.youtube_channel yc
                          ON v.channel_id = yc.youtube_channel_id
                        LEFT JOIN orchard_app_reporting_v2.art_relations_prod_art_relations.youtube_channel_upc ycu
                          ON yc.id = ycu.youtube_channel_id
                        LEFT JOIN facts.prod.dim_release dr
                          ON ycu.upc = dr.releaseid
                        WHERE
                          v.isrc IS NOT NULL
                          AND v.content_type = \'PARTNER_UPLOADED\'
                          AND licensor in (\'theorchard\', \'sme\')
                          AND dr.subaccountid is not null;
                      " AS sql
                      CALL apoc.load.jdbc("snowflake_orchard", sql) YIELD row RETURN row
                ',
                '
                    WITH row
                    MATCH (c:Channel:YouTube {channelId: row.CHANNEL_ID})
                    SET
                        c.subaccountId = row.SUBACCOUNT_ID,
                        c.modifiedAt = datetime()
                ',
                {batchSize:1000, iterateList:true, parallel:false}
            );
        </query>
        <query>
            CALL apoc.periodic.iterate(
                '
                    WITH "
                        SELECT DISTINCT
                          v.video_id,
                          dr.subaccountid as subaccount_id
                        FROM facts.prod.staging_raw_youtube_video_report v
                        LEFT JOIN orchard_app_reporting_v2.art_relations_prod_art_relations.youtube_channel yc
                          ON v.channel_id = yc.youtube_channel_id
                        LEFT JOIN orchard_app_reporting_v2.art_relations_prod_art_relations.youtube_channel_upc ycu
                          ON yc.id = ycu.youtube_channel_id
                        LEFT JOIN facts.prod.dim_release dr
                          ON ycu.upc = dr.releaseid
                        WHERE
                          v.isrc IS NOT NULL
                          AND v.content_type = \'PARTNER_UPLOADED\'
                          AND licensor in (\'theorchard\', \'sme\')
                          AND dr.subaccountid is not null;
                      " AS sql
                      CALL apoc.load.jdbc("snowflake_orchard", sql) YIELD row RETURN row
                ',
                '
                    WITH row
                    MATCH (v:Video:YouTube {videoId: row.VIDEO_ID})
                    SET
                        v.subaccountId = row.SUBACCOUNT_ID,
                        v.modifiedAt = datetime()
                ',
                {batchSize:1000, iterateList:true, parallel:false}
            );
        </query>
    </changeset>
</changelog>

