User Tools

Site Tools


advanced_transformations:creating_custom_functions

How to create custom functions in charts

Sometimes you need to have a conditional replacement of a string or a numerical calculation such as a currency conversion which should happen automatically.

One such example case for String manipulations is that you are tagging your Meta/Facebook using dynamic tagging using the site_source_name and placement tags:

Unfortunately the Facebook Ads connector does not support returning the exact same site source names and placements as it returns in the UTM tags. So we need a custom function:

Converting Facebook platform position to site source name

--- Function to convert currencies for both the revenues and the costs
CREATE OR REPLACE FUNCTION fb_platform_position (platform_position text)
    RETURNS text
    AS $$
BEGIN
    IF lower(platform_position) = 'facebook_desktop_feed' THEN
        RETURN'feed';
    ELSIF lower(platform_position) = 'facebook_mobile_feed' THEN
        RETURN'feed';
    ELSIF lower(platform_position) = 'instagram_feed' THEN
        RETURN'feed';
    ELSIF lower(platform_position) = 'facebook_marketplace' THEN
        RETURN'marketplace';
    ELSIF lower(platform_position) = 'facebook_right_column' THEN
        RETURN'right_hand_column';
    ELSIF lower(platform_position) = 'instagram_explore' THEN
        RETURN'instagram_explore';
    ELSIF lower(platform_position) = 'messenger_inbox' THEN
        RETURN'messenger_inbox';
    ELSIF lower(platform_position) = 'facebook_stories' THEN
        RETURN'facebook_stories';
    ELSIF lower(platform_position) = 'instagram_stories' THEN
        RETURN'instagram_stories';
    ELSIF lower(platform_position) = 'instagram_reels' THEN
        RETURN'instagram_reels';
    ELSIF lower(platform_position) = 'facebook_instream_video' THEN
        RETURN'instream_video';
    ELSIF lower(platform_position) = 'facebook_instant_articles' THEN
        RETURN'instant_article';
    ELSIF lower(platform_position) = 'an' THEN
        RETURN'an_classic';
    ELSIF lower(platform_position) = 'others' THEN
        RETURN'others';
    ELSE
        RETURN lower(platform_position);
    END IF;
END;
$$
LANGUAGE plpgsql
IMMUTABLE STRICT PARALLEL SAFE;

Converting Facebook platform position to platform

--- Function to convert currencies for both the revenues and the costs
CREATE OR REPLACE FUNCTION fb_publisher_platform (publisher_platform text)
    RETURNS text
    AS $$
BEGIN
    IF publisher_platform = 'instagram' THEN
        RETURN 'ig';
    ELSIF publisher_platform = 'facebook' THEN
        RETURN 'fb';
    ELSIF publisher_platform = 'audience_network' THEN
        RETURN 'an';
    ELSIF publisher_platform = 'messenger' THEN
        RETURN 'msg';
    ELSE
        RETURN lower(publisher_platform);
    END IF;
END;
$$
LANGUAGE plpgsql
IMMUTABLE STRICT PARALLEL SAFE;

You can now call this function in charts in the following way

advanced_transformations/creating_custom_functions.txt · Last modified: 2022/10/26 10:38 by windsor_ai