docstr: Pulls Sharepoint Sites data.
  
  Parameters
  ----------
  query : ast.Select
     Given SQL SELECT query
  
  Returns
  -------
  pd.DataFrame
      Sharepoint Sites matching the query
  
  Raises
  ------
  ValueError
      If the query contains an unsupported condition
docstr_tok: ["Pulls","Sharepoint","Sites","data",".","Parameters","--","--","--","--","--","query",":","ast.Select","Given","SQL","SELECT","query","Returns","--","--","--","-","pd.DataFrame","Sharepoint","Sites","matching","the","query","Raises","--","--","--","ValueError","If","the","query","contains","an","unsupported","condition"]
code: def select(self, query: ast.Select) -> pd.DataFrame:
      """
      Pulls Sharepoint Sites data.
  
      Parameters
      ----------
      query : ast.Select
         Given SQL SELECT query
  
      Returns
      -------
      pd.DataFrame
          Sharepoint Sites matching the query
  
      Raises
      ------
      ValueError
          If the query contains an unsupported condition
      """
      select_statement_parser = SELECTQueryParser(
          query, "sites", self.get_columns()
      )
      (
          selected_columns,
          where_conditions,
          order_by_conditions,
          result_limit,
      ) = select_statement_parser.parse_query()
  
      sites_df = pd.json_normalize(self.get_sites(limit=result_limit))
      select_statement_executor = SELECTQueryExecutor(
          sites_df,
          selected_columns,
          where_conditions,
          order_by_conditions,
      )
      sites_df = select_statement_executor.execute_query()
  
      return sites_df
  
imports: import pandas
  from typing import Text, List, Dict, Any
  from mindsdb_sql.parser import ast
  from mindsdb.integrations.libs.api_handler import APITable
  from mindsdb.integrations.handlers.utilities.query_utilities.select_query_utilities import SELECTQueryParser, SELECTQueryExecutor
  from mindsdb.integrations.handlers.utilities.query_utilities.delete_query_utilities import DELETEQueryParser, DELETEQueryExecutor
  from mindsdb.integrations.handlers.utilities.query_utilities.update_query_utilities import UPDATEQueryParser, UPDATEQueryExecutor
  from mindsdb.integrations.handlers.utilities.query_utilities import INSERTQueryParser
label_desc: Use image node_id 1 for calling the SitesTable obj's underlying member method code with example usage: obj.select(query) and returns: sites_df