Tableau Migration SDK 6.1.0
  • Articles
  • Code Samples
  • Python API Reference
  • C# API Reference
Show / Hide Table of Contents
  • Filters
    • Filter projects by name
    • Filter users by SiteRole
    • Filter Custom Views by 'Shared' flag
  • Mappings
    • Username email
    • Rename projects
    • Change projects
  • Pulled Hooks
    • Filter Data Source Connections
  • Transformers
    • Add tags to content
    • Encrypt Extracts
    • Adjust 'Start At' to Scheduled Tasks
    • Change default users for Custom Views
    • Action URL XML Transformer
    • Modify Permissions
  • Post-Publish Hooks
    • Update permissions
  • Bulk Post-Publish Hooks
    • Bulk logging
  • Batch Migration Completed Hooks
    • Batch migration logging
  • Migration Action Completed Hooks
    • Migration action logging

Sample: Filter Data Source Connections

This sample illustrates how to filter published data sources that use a given connection type. It uses a pulled hook as the connection details are not available until the data source has been fully retrieved.

  • Python
  • C#

Filter Class

from typing import Optional

from tableau_migration import (
    ContentItemPulledContext,
    ContentItemPulledHookBase,
    FilterStatus,
    IPublishableDataSource)

class DataSourceConnectionPulled(ContentItemPulledHookBase[IPublishableDataSource]):

    def execute(self, ctx: ContentItemPulledContext[IPublishableDataSource]) -> Optional[ContentItemPulledContext[IPublishableDataSource]]:
        if any(c.type.casefold() == "postgres".casefold() for c in ctx.pulled_item.connections):
            ctx.status = FilterStatus.CASCADE_SKIP

        return ctx

Registration

plan_builder.hooks.add(DataSourceConnectionPulled)

See hook registration for more details.

Filter Class

public class DataSourceConnectionPulled : ContentItemPulledHookBase<IPublishableDataSource>
{
    public override Task<ContentItemPulledContext<IPublishableDataSource>?> ExecuteAsync(ContentItemPulledContext<IPublishableDataSource> ctx, CancellationToken cancel)
    {
        if (ctx.PulledItem.Connections.Any(c => string.Equals(c.Type, "postgres", StringComparison.OrdinalIgnoreCase)))
        {
            ctx.Status = FilterStatus.CascadeSkip;
        }

        return ctx.ToTask();
    }
}

Registration

Learn more.

Dependency Injection

Learn more.

services.AddScoped<DataSourceConnectionPulled>();
  • Edit this page
In this article