Home

Conecta Stripe a BigQuery de forma automatizada y manual

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:

  • Exportación totalmente automatizada a BigQuery utilizando Coupler.io – Coupler.io es una plataforma de automatización de informes todo en uno para convertir datos sin procesar en informes significativos. Permite recopilar datos de Stripe, transformarlos y cargarlos en BigQuery u otros destinos. Ahorra mucho tiempo, ofrece un control total sobre los datos exportados y no requiere codificación.
  • Exportaciones manuales desde Stripe – factible para exportaciones únicas, y no requiere conocimientos técnicos. Por lo demás, bastante limitante y repetitivo.
  • Stripe Sigma y webhooks – pueden automatizarse y personalizarse a tu gusto, requieren una cuota de suscripción adicional y no son adecuados para usuarios sin conocimientos técnicos.

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.

  • Haz clic en Proceed en el siguiente formulario si hemos preseleccionado Stripe como aplicación de origen y BigQuery como destino. Se te pedirá que crees una cuenta gratuita en Coupler.io.
  • Siguiendo el asistente, conecta tu cuenta de Stripe y elige la entidad de datos que deseas recuperar. No te preocupes: si deseas recuperar varias entidades, será tan sencillo como duplicar esta fuente y modificar algunos ajustes.
Exportación de 2 facturas
  • Crea algunos filtros adicionales si lo deseas. A continuación, verás una vista previa de tus datos, que puede tardar un momento o dos en cargarse si tienes muchos datos que recuperar.
  • En el módulo Transform, puede añadir o eliminar columnas, crear nuevos campos calculados, aplicar filtros, ordenar y mucho más. Ajusta los datos a tu gusto y pulsa Proceed.
3 módulo de transformación
  • A continuación, configura BigQuery como destino de tus datos. Necesitarás:
    • Crear una cuenta de servicio con los permisos BigQuery Data Editor y BigQuery Job User.
    • Crear una nueva clave para esta cuenta y guárdala como JSON.
    • Sube el archivo JSON a Coupler.io. Más información sobre esta configuración en la base de conocimientos de Coupler.io.
  • De vuelta en Coupler.io, elige el conjunto de datos y la tabla para su importación. Especifica el esquema o haz que se detecte automáticamente.
  • A continuación, ejecuta el importador. Y aquí está un ejemplo de exportación de facturas enviadas desde Stripe a BigQuery:
exportación de 4 rayas en bq
  • Antes de sumergirte en tus datos, vale la pena automatizar las importaciones para que los datos se actualicen en el horario que elijas. Para ello, vuelve a Coupler.io y activa Automatic data refresh. Establece un calendario y guárdalo.
5 transferencias de horarios

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:

  • Inicia sesión en Stripe y ve a la categoría que deseas exportar.
  • Haz clic en el botón Export de la derecha y ajusta los criterios. Si no quieres obtener todas las columnas, también puedes personalizarlo. A continuación, haz clic en el botón Export y se guardará el archivo .csv.
6 clientes de exportación
  • A continuación, abra la consola BigQuery y haz clic para crear una tabla para cualquiera de los conjuntos de datos existentes o nuevos. En el menú Create table from, seleccione Upload. Busca tu archivo y cambia el formato a CSV. Especifica el esquema o haz que BQ lo detecte automáticamente y, a continuación, haz clic en Create table.
7 cargar csv

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:

  • Inicia sesión en Stripe Sigma y programa una consulta SQL recurrente.
  • Configura un webhook para recibir los resultados de una consulta.
  • Escribe un script que cargue la carga útil en BigQuery.

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

  • Inicia sesión en Stripe y ve a la sección de Developers
  • En la sección API keys, crea una clave secreta y guárdela para su uso posterior.
  • En BigQuery, crea una cuenta de servicio con los siguientes permisos: BigQuery Data Editor y BigQuery Job User. Crea también una nueva clave para esta cuenta y guárdala como archivo JSON.
  • De vuelta en Stripe navega a More -> Sigma. Inicia una prueba gratuita si aún no has utilizado el servicio.
  • Una vez que tus datos estén listos, haz clic en Scheduled Queries y añade una nueva. Escribe un SQL que recupere los datos deseados de Stripe, siguiendo el esquema de tabla que verás a la izquierda. Por ejemplo, lo siguiente recupera el código para algunos detalles vitales de la factura:
SELECT
  id,
  date,
  total,
  due_date,
  paid as is_paid
FROM
  invoices
  • Ejecuta el código para asegurarte de que devuelve la información correcta. Si es así, guárdalo y pulse el botón Schedule para elegir la frecuencia con la que debe ejecutarse el código, por ejemplo, diariamente.
8 calendario
  • Puedes incluir uno o más suscriptores a los que se enviará un archivo CSV con los resultados de una consulta, cada vez que se ejecute. Técnicamente, esta persona podría subir un archivo a BigQuery, pero esto crearía una carga de trabajo innecesaria. Por esa razón, es mejor:
    • enviar los resultados de la consulta a BigQuery a través de la API o 
    • utilizar webhooks para recuperar el archivo de resultados de la consulta y luego cargarlo en BigQuery.
  • Te mostraré el método webhooks, pero ambos son perfectamente viables.

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.

  • Para configurar un webhook en Stripe, ve a la pestaña Desarrolladores, luego a Webhooks y haz clic en + Añadir punto final. Configúralo para que escuche sigma.scheduled_query_run.created y proporciona un enlace a tu punto final.

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
    }
  }
}
  • Observa la URL a los resultados de la consulta que reside en un subcampo data.object.file.url. Puedes recuperarla utilizando el comando curl, insertando tu clave API. Por ejemplo:

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

  • Como alternativa, escribe un script que escuche este evento y cargue la carga útil en BigQuery. Aquí hay un ejemplo en Flask:
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.

  • Si buscas una solución sencilla pero potente, Coupler.io te funcionará a la perfección. Es adecuado para audiencias no técnicas, pero miles de ingenieros y analistas también lo utilizan con mucho éxito. También es, posiblemente, la forma más sencilla de automatizar las exportaciones de Stripe a BigQuery.
  • Si necesitas un método sencillo y único para exportar algunos datos de Stripe, comprueba si el método manual te sirve. Es rápido de configurar y no requiere conocimientos técnicos.
  • Si prefieres escribir código, entonces te resultará útil combinar Stripe Sigma y Webhooks o depender únicamente de estos últimos. Esta solución ofrece toda la flexibilidad que necesitas, pero es naturalmente más compleja y requiere más tiempo, tanto en términos de configuración inicial como de mantenimiento del código.

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