Tableau Migration SDK 5.1.1
  • 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
  • Transformers
    • Add tags to content
    • Encrypt Extracts
    • Adjust 'Start At' to Scheduled Tasks
    • Change default users for Custom Views
    • Action URL XML Transformer
  • 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: Changing Default Users for Custom View

This sample illustrates how to change the default users for a custom view

Both the Python and C# transformer classes inherit from a base class that handles the core functionality, then create versions for IPublishableCustomView.

  • Python
  • C#

Transformer Class

To implement the tag addition in Python, you can utilize the following transformer class:

from tableau_migration import (
    ContentTransformerBase,
    IContentReference,
    IPublishableCustomView
)

class CustomViewDefaultUsersTransformer(ContentTransformerBase[IPublishableCustomView]):
    
    #Pass in list of users retrieved from Users API
    default_users = []
    
    def transform(self, itemToTransform: IPublishableCustomView) -> IPublishableCustomView:
        itemToTransform.default_users = self.default_users
        return itemToTransform

Registration

For detailed instructions on registering the transformer, refer to the documentation.

plan_builder.transformers.add(CustomViewDefaultUsersTransformer)

Transformer Class

In C#, the transformer class for adding tags is implemented as shown below:

public class CustomViewExcludeDefaultUserTransformer(
    ISharedResourcesLocalizer localizer,
    ILogger<CustomViewExcludeDefaultUserTransformer> logger)
    : ContentTransformerBase<IPublishableCustomView>(localizer, logger)
{
    public IList<string> ExcludeUsernames { get; } = new List<string>() {"User1", "User2"};
        

    private readonly ILogger<CustomViewExcludeDefaultUserTransformer>? _logger = logger;

    public override async Task<IPublishableCustomView?> TransformAsync(IPublishableCustomView itemToTransform, CancellationToken cancel)
    {
        var newDefaultUsers = itemToTransform.DefaultUsers.Where(user => !ExcludeUsernames.Contains(user.Name)).ToList();

        itemToTransform.DefaultUsers = newDefaultUsers;

        _logger?.LogInformation(
            @"Excluding default users {newDefaultUsers}",
            newDefaultUsers);

        return await Task.FromResult(itemToTransform);
    }
}

Registration

To register the transformer in C#, follow the guidance provided in the documentation.

_planBuilder.Transformers.Add<CustomViewExcludeDefaultUserTransformer, IPublishableCustomView>();

Dependency Injection

Learn more about dependency injection here.

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