code: def _cell_magic(line, query):
      
      args = magic_arguments.parse_argstring(_cell_magic, line)
  
      params = []
      if args.params is not None:
          try:
              params = _helpers.to_query_parameters(
                  ast.literal_eval("".join(args.params))
              )
          except Exception:
              raise SyntaxError(
                  "--params is not a correctly formatted JSON string or a JSON "
                  "serializable dictionary"
              )
  
      project = args.project or context.project
      client = bigquery.Client(project=project, credentials=context.credentials)
      bqstorage_client = _make_bqstorage_client(
          args.use_bqstorage_api or context.use_bqstorage_api, context.credentials
      )
      job_config = bigquery.job.QueryJobConfig()
      job_config.query_parameters = params
      job_config.use_legacy_sql = args.use_legacy_sql
      query_job = _run_query(client, query, job_config)
  
      if not args.verbose:
          display.clear_output()
  
      result = query_job.to_dataframe(bqstorage_client=bqstorage_client)
      if args.destination_var:
          IPython.get_ipython().push({args.destination_var: result})
      else:
          return result
docs: Underlying function for bigquery cell magic
  
      Note:
          This function contains the underlying logic for the 'bigquery' cell
          magic. This function is not meant to be called directly.
  
      Args:
          line (str): "%%bigquery" followed by arguments as required
          query (str): SQL query to run
  
      Returns:
          pandas.DataFrame: the query results.