Income sources

ASCAP Domestic

ASCAP_DOMComposition

PRO · CSV · USD

Configuration

Edit configuration
Display name
ASCAP Domestic
Key
ASCAP_DOM
Rights layer
Composition
File format
CSV
Default currency
USD
Source kind
PRO
Notes
US performance royalties. ASCAP added a Program Code column in Q3 2025.

Extraction query

Edit query
Reads CSVUpdated 07/12/2026
-- ASCAP Domestic distribution export -> normalized schema
SELECT
  row_number() OVER ()                                          AS line_number,
  trim("Work Title")                                            AS song_title,
  upper(trim("Work Title"))                                     AS song_title_key,
  upper(trim("Music User"))                                     AS source_name_key,
  upper(trim("Performance Source/Broadcast Medium"))            AS income_class_key,
  upper(trim("Type Of Right"))                                  AS right_type_key,
  upper(trim("Role Type"))                                      AS role_type_key,
  upper(trim("Territory"))                                      AS territory_raw,
  trim("Composer Name")                                         AS writer_name,
  TRY_CAST("Number of Plays" AS DECIMAL(14,2))                  AS units,
  TRY_CAST("Dollars" AS DECIMAL(18,4))
    + COALESCE(TRY_CAST("Premium Dollars" AS DECIMAL(18,4)), 0) AS amount_raw,
  COALESCE(upper(trim("Adjustment Indicator")), '') IN ('Y', 'YES') AS adjustment,
  COALESCE(TRY_CAST(trim("Performance Start Date") AS DATE),
           CAST(try_strptime(trim("Performance Start Date"), '%m/%d/%Y') AS DATE)) AS earning_date,
  'USD'                                                         AS currency,
  to_json(row)                                                  AS source_row
FROM read_csv('{{file}}', header = true, sample_size = -1, all_varchar = true) AS row;

Territory resolution

Edit overrides

territory_raw is resolved to an ISO 3166-1 alpha-2 code in code via a country lookup — not with rules. Values the lookup can't resolve (historical territories, regional groupings) fall back to this override table.

GREAT BRITAIN→GB
THE NETHERLANDS→NL
UNITED STATES OF AMERICA→US

Normalization rules

Edit rules

This source's own rules, grouped by the attribute each writes. First match wins, top to bottom; conditions within a rule are ANDed. Each group ends in a pinned catch-all.

Stage 1 — Raw match keys to standard enums

income_channel_std

6 rules
1STREAMING_VIDEOincome_class_key ~ GN-AV*
2BACKGROUND_MUSICincome_class_key ~ GN-BA*
3INTERNET_RADIOincome_class_key ~ GN-IN*
4STREAMING_AUDIOincome_class_key ~ GN-*
5TVincome_class_key ~ TV-*
6RADIOincome_class_key ~ RD-*
Catch-allUNCLASSIFIEDMatches every line not caught above.

right_type_std

1 rule
1PERFORMANCEright_type_key ~ PR*
Catch-allUNCLASSIFIEDMatches every line not caught above.

Stage 2 — Standard enums to derived values

is_digital

2 rules
1truenormalized_income_channel ~ STREAMING_*
2truenormalized_income_channel ~ INTERNET_RADIO
Catch-allfalseMatches every line not caught above.

is_performance

0 rules

No rules yet — only the catch-all applies.

Catch-alltrueMatches every line not caught above.