code: def filter_resources(tables, relationships,
                       include_tables=None, include_columns=None,
                       exclude_tables=None, exclude_columns=None):
      
      _tables = copy.deepcopy(tables)
      _relationships = copy.deepcopy(relationships)
  
      include_tables = include_tables or [t.name for t in _tables]
      include_columns = include_columns or [c.name for t in _tables for c in t.columns]
      exclude_tables = exclude_tables or list()
      exclude_columns = exclude_columns or list()
  
      _tables = [t for t in _tables if t.name not in exclude_tables and t.name in include_tables]
      _relationships = [r for r in _relationships
                        if r.right_col not in exclude_tables
                        and r.left_col not in exclude_tables
                        and r.right_col in include_tables
                        and r.left_col in include_tables]
  
      for t in _tables:
          t.columns = [c for c in t.columns if c.name not in exclude_columns and c.name in include_columns]
  
      return _tables, _relationships
docs: Include the following:
          1. Tables and relationships with tables present in the include_tables (lst of str, tables names)
          2. Columns (of whichever table) present in the include_columns (lst of str, columns names)
      Exclude the following:
          1. Tables and relationships with tables present in the exclude_tables (lst of str, tables names)
          2. Columns (of whichever table) present in the exclude_columns (lst of str, columns names)
      Disclosure note:
          All relationships are taken into consideration before ignoring columns.
          In other words, if one excludes primary or foreign keys, it will still keep the relations display amongst tables