Coupler.io Blog

Conecta Stripe a BigQuery de forma automatizada y manual

How to connect Stripe to BigQuery

Stripe ofrece capacidades analíticas limitadas, por lo que no es de extrañar que muchos opten por exportar sus datos financieros fuera de la plataforma. BigQuery es un destino habitual para estos datos, tanto para aquellos que buscan funciones analíticas más amplias como para otros que prefieren simplemente hacer una copia de seguridad de sus datos financieros. 

Como es de esperar, hay más de una forma de conectar Stripe a BigQuery. De hecho, hay al menos media docena de métodos que puedes utilizar, dependiendo mucho de tus habilidades, entorno y requisitos. He elegido tres de ellos que pensé que eran los más viables, pues no requieren una configuración extensa y la mayoría se puede personalizar para adaptarse a su proyecto.

Métodos para cargar datos de Stripe a BigQuery

En este artículo, voy a cubrir las siguientes formas de conectar Stripe a BigQuery:

Trataré cada uno de estos métodos en los capítulos siguientes.

Integración automatizada de Stripe en BigQuery

Si planeas obtener datos repetidamente de Stripe a BigQuery, deberías considerar automatizar el proceso. Con Coupler.io, puedes configurar la conexión en cuestión de minutos y cargar los datos deseados en BigQuery sin código. Así de sencillo.

Eso es todo. Si estás interesado en exportar datos de Stripe a otros destinos, echa un vistazo a nuestra reciente guía sobre cómo conectar Stripe a Power BI.

Exportación manual de Stripe a BigQuery

Stripe ofrece una capacidad básica para exportar entidades de datos particulares como archivos .csv. A continuación, puedes cargar dicho archivo en Google Cloud Storage y BigQuery. Este método funcionará bien si necesitas analizar algún tipo específico de datos, por ejemplo, la lista de facturas de un periodo concreto. El inconveniente de este método es que requiere mucho esfuerzo cada vez que se exporta. Además, no puedes exportar diferentes tipos de datos a la vez, ni personalizar los datos exportados (por ejemplo, obtener sólo facturas por valor de 1.000 dólares o más).

Sigue estos pasos para conectar manualmente Stripe a BigQuery:

Si lo prefieres, puedes cargar primero el archivo en Google Cloud Storage. A continuación, cárgalo en BigQuery utilizando la siguiente sintaxis:

LOAD DATA OVERWRITE {{your dataset}}.{{your table}}
FROM FILES (
  Format = 'CSV',
  Uris = ['gs://bucket/path/file.csv']);

Stripe Sigma y webhooks para exportaciones automatizadas a BigQuery

Stripe tiene su propio producto llamado Stripe Sigma que está pensado para ayudarte a acceder a tus datos. Puedes utilizar SQL para extraer el tipo de datos que necesitas y crear informes o llevarlos a herramientas como BigQuery con Python, por ejemplo. Sigma es un complemento de pago, consulta la práctica calculadora de precios para obtener más información sobre los costes estimados en los que incurrirías.

Para cargar datos de Stripe a BigQuery utilizando Sigma, tendrás que hacer lo siguiente:

Eso es todo en pocas palabras. Ahora vamos con las instrucciones paso a paso:

SELECT
  id,
  date,
  total,
  due_date,
  paid as is_paid
FROM
  invoices

Cuando se ejecuta una consulta programada, Stripe envía el evento sigma.scheduled_query_run. Si configuras un webhook para escuchar este evento, podrás recuperar su carga útil, que también incluye una ruta a un archivo con los resultados de la consulta.

Este es el aspecto de la carga útil del evento sigma.scheduled_query_run.created:

{
  "object": "event",
  "pending_webhooks": 2,
  "created": 1502793192,
  "type": "sigma.scheduled_query_run.created",
  "livemode": true,
  "request": null,
  "data": {
    "object": {
      "id": "sqr_Jxhi5BvNIytZtVT0XQG4",
      "object": "scheduled_query_run",
      "status": "completed",
      "data_load_time": 1504356600,
      "file": {
        "id": "{{ FILE ID }}",
        "object": "file",
        "url": "https://files.stripe.com/v1/files/{{ FILE ID }}/contents",
        "created": 1507842188,
        "purpose": "sigma_scheduled_query",
        "size": 55035,
        "type": "csv"
      },
      "title": "Invoices load",
      "sql": "SELECT id, date, total, due_date, paid as is_paid FROM invoices",
      "created": 1524754194,
      "result_available_until": 1505393633,
      "error": null,
      "livemode": true
    }
  }
}

curl https://files.stripe.com/v1/files/{{ FILE ID }}/contents -u sk_live_123456789:

from flask import Flask, request
import stripe
from google.cloud import bigquery

from google.oauth2 import service_account
credentials = service_account.Credentials.from_service_account_file(
'path/to/file.json') # path to your BQ service account fee

app = Flask(__name__)
stripe.api_key = 'YOUR_STRIPE_SECRET_KEY'  # Replace with your actual Stripe secret key
bigquery_client = bigquery.Client(project='YOUR_PROJECT_ID', credentials=credentials)  # Replace with your actual BigQuery project ID

@app.route('/webhook', methods=['POST'])
def webhook():
    event = stripe.Event.construct_from(request.json, stripe.api_key)
    
    if event.type == 'sigma.scheduled_query_run.created':
        file_url = event.data.object.file.url
        
        # Load the data from the file into BigQuery
        job_config = bigquery.LoadJobConfig(
            source_format=bigquery.SourceFormat.CSV,
            skip_leading_rows=1,
            autodetect=True,
        )
        
        load_job = bigquery_client.load_table_from_uri(
            file_url,
            'YOUR_DATASET.YOUR_TABLE',  # Replace with your actual BigQuery dataset and table name
            job_config=job_config,
        )
        
        load_job.result()  # Wait for the job to complete
    
    return 'Your Stripe data is now in BigQuery!', 200

if __name__ == '__main__':
    app.run(port=5000)

Asegúrate de insertar tu API Key y los detalles BQ requeridos en los lugares respectivos del código. Añade también una ruta al archivo JSON que guardaste hace un momento. Por ejemplo, si guardaste el archivo de clave JSON como 'my_key.json'en el mismo directorio que tu script Python, puedes reemplazar 'path/to/service-account-key.json' por 'my_key.json'. Para automatizar este script de Stripe a BigQuery, puedes configurar, por ejemplo, un cron job.

Nota: Puedes cargar datos desde Stripe a una tabla BigQuery también sin Stripe Sigma. Es posible que aún desees confiar en webhooks, pero en lugar de escuchar un evento sigma.scheduled_query_run.created y obtener los resultados de las consultas, escucharías eventos particulares, tales como invoice_created. Luego, simplemente cargar su carga útil a BigQuery con un script similar al que puse arriba. Este método no es tan conveniente como su predecesor, pero sin duda puede ser más rentable.

Cómo conectar Stripe a BigQuery – recapitulación

Ciertamente hay más formas de conectar Stripe a BigQuery, pero las tres que he mencionado deberían hacer el trabajo para prácticamente todo el mundo. Cada enfoque es diferente, así que vamos a hacer un resumen rápido para que puedas elegir el más adecuado.

Por cierto, si necesitas una solución personalizada y ninguno de estos métodos te funciona, lo más probable es que podamos ayudarte. Coupler.io ofrece servicios de consultoría de análisis de datos a través de los cuales ayudamos a las empresas a dar sentido a sus datos. Esto puede implicar, por ejemplo, la conexión de los datos de Stripe con la información que fluye de las otras aplicaciones que utilizas, la configuración de la automatización, alertas de datos, o paneles interactivos en las herramientas de tu elección.

Si esto te parece algo que te gustaría aprovechar, no dudes en concertar una cita gratuita para hablar de tu proyecto.

Para más información sobre este tema, consulta nuestro artículo sobre cómo conectar Stripe a Looker Studio.

Automatiza la exportación de datos con Coupler.io

Empieza gratis
Salir de la versión móvil