Skip to content

Tableau. Row-level security. Separate agency, brand, and regional ecommerce data.

What this means for your store

Row-level security (RLS) restricts which rows each user sees based on Tableau username, group membership, or user attributes. A performance agency hosting ten Shopify clients on one Server must ensure Brand A never sees Brand B's unit economics. RLS applies at query time on published data sources - unlike dashboard filters, users cannot strip it without changing identity.

Scenario on a real storefront

Common Thread Collective publishes Ecommerce Core once and maps Tableau groups to brand IDs so each client sees only their orders and margin:

// User filter on published data source
[brand_id] = USERATTRIBUTE('brand_id')

// Or group-based mapping table
[brand_id] IN (
  { FIXED [username] :
    MAX(IF [allowed_brand] = USERNAME() THEN [brand_id] END)
  }
)

// Tableau Server → Users and Groups
Group: client_brand_a → User Attribute brand_id = A

// Embed: pass JWT with matching attributes (Tableau Connected Apps)
// Test: “View as” each group before certifying workbook

What to do next

  • RLS on blended sources is fragile - enforce tenant keys in BigQuery views first.
  • Service accounts used in subscriptions run as one user; schedule per client or use impersonation.
  • Audit quarterly: new hires in agency_all may inherit too much access to competitor margin data.

Bottom line

Row-level security is the control plane for multi-brand ecommerce analytics on shared infrastructure. Map identities to brand keys, test with View As, and prefer warehouse views as the first line of defence.