def make_post(http, schema, data, projectId, datasetId, tableId):
    """
    Creates an http POST request for loading data into
    a bigquery table

    Args:
        http: an authorized httplib2 client,
        schema: a valid bigquery schema,
        see https://cloud.google.com/bigquery/docs/reference/v2/tables,
        data: valid JSON to insert into the table

    Returns: an http.request object
    """
    url = ('https://www.googleapis.com/upload/bigquery/v2/projects/' +
           projectId + '/jobs')
    # Create the body of the request, separated by a boundary of xxx
    resource = ('--xxx\n' +
                'Content-Type: application/json; charset=UTF-8\n' + '\n' +
                '{\n' +
                '   "configuration": {\n' +
                '     "load": {\n' +
                '       "schema": {\n'
                '         "fields": ' + str(schema) + '\n' +
                '      },\n' +
                '      "destinationTable": {\n' +
                '        "projectId": "' + projectId + '",\n' +
                '        "datasetId": "' + datasetId + '",\n' +
                '        "tableId": "' + tableId + '"\n' +
                '      }\n' +
                '    }\n' +
                '  }\n' +
                '}\n' +
                '--xxx\n' +
                'Content-Type: application/octet-stream\n' +
                '\n')
    # Append data to the request body
    resource += data

    # Signify the end of the body
    resource += ('--xxx--\n')

    headers = {'Content-Type': 'multipart/related; boundary=xxx'}

    return http.request(url,
                        method='POST',
                        body=resource,
                        headers=headers)
    # [END make_post]