He dominado el Explorador de APIs de Looker. ¿Y ahora qué?

Con el Explorador de APIs de Looker, los usuarios pueden probar las llamadas a la API casi al instante sin tener que escribir ni una sola línea de código. Si has instalado la extensión Explorador de APIs desde Looker Marketplace, puedes hacer clic en Explorador de APIs en el menú Aplicaciones de Looker para abrir el Explorador de APIs y ver la documentación de la API actual. Si no has instalado la extensión Explorador de APIs, puedes hacerlo desde la sección Aplicaciones de Looker Marketplace.

Quizá hayas descubierto el mejor flujo de trabajo para crear una vista de forma dinámica, actualizar la consulta subyacente y programarla para varias partes interesadas de tu empresa mediante el Explorador de APIs. Una pregunta habitual es: ¿cómo puedo ejecutar estas llamadas o funciones fuera del Explorador de APIs? Hay tres formas habituales de acceder a la API:

  1. Kits de desarrollo de software (SDKs) de la API de Looker
  2. Solicitudes HTTP
  3. Herramientas de desarrollo de software

En esta página se explica cómo usar estos métodos.

Antes de empezar: autenticación y puertos

Independientemente de cómo accedas a la API de Looker, primero necesitarás dos datos: tu autenticación de API personal (en forma de ID de cliente y secreto de cliente) y el número de puerto que usa tu instancia de Looker.

Para encontrar un ID de cliente y un secreto de cliente, sigue estos pasos:

  • Si eres administrador de Looker, ve a la página Usuarios de la interfaz de usuario de Looker del usuario que te interese y selecciona Editar claves.
  • Si no eres administrador de Looker, tu administrador de Looker te habrá proporcionado el ID de cliente y el secreto de cliente.
Lo más importante que debes recordar sobre tu ID de cliente y tu secreto de cliente es que no debes compartir estas claves con nadie.

En las instancias de Looker alojadas en Google Cloud o Microsoft Azure, y en las alojadas en Amazon Web Service (AWS) que se crearon a partir del 7 de julio del 2020, la ruta de la API de Looker predeterminada usa el puerto 443. En las instancias de Looker alojadas en AWS que se crearon antes del 7 de julio del 2020, la ruta de la API de Looker predeterminada usa el puerto 19999.

Si alojas tu propia instancia, pregunta a tu administrador del sistema cuál es el número de puerto. Puede configurarse en el campo URL del host de la API del panel de administración de Looker. Para ver esta información, ve al menú desplegable Administrar de Looker y selecciona API.

Para obtener más información sobre los puertos, consulta la página de documentación Empezar a usar la API de Looker. En los ejemplos siguientes se usa el puerto de la API 19999, pero debes confirmar el puerto que usa tu instancia.

Opción 1: Usar un kit de desarrollo de software (SDK) de Looker

Looker ofrece SDKs de cliente de la API de Looker oficiales en Python, Ruby, TypeScript y JavaScript, Swift, Kotlin y R. Puedes encontrar el código fuente y ejemplos en el sdk-examplesrepositorio de GitHub de Looker.

Un SDK proporciona herramientas o bibliotecas que permiten a los desarrolladores interactuar con una plataforma o aplicación concretas. En este caso, los SDKs de Looker suelen contener APIs. Por poner un ejemplo del desarrollador web y autor Kristopher Sandoval, "las APIs son líneas telefónicas que permiten la comunicación dentro y fuera de la casa. El SDK es la casa en sí y todo su contenido". En el artículo ¿Cuál es la diferencia entre una API y un SDK?, explica qué es un SDK y cómo se relaciona con las APIs.

Los SDKs de Looker incluyen todos los endpoints de la API que puedes querer o necesitar usar, y se empaquetan de forma que puedas interactuar con Looker sin problemas con el lenguaje de programación que elijas. Estas funciones te permiten realizar las siguientes tareas:

  • Enviar datos a Looker
  • Obtener datos de Looker
  • Actualizar datos en Looker
  • Eliminar datos en Looker
En la siguiente sección se explicarán con más detalle las diferencias entre estas acciones.

A continuación, te mostramos un ejemplo de cómo puedes actualizar un usuario con el SDK de Python:

  1. Inicializa la sesión con looker_sdk.init.
  2. Actualiza el usuario con sdk.update_user. Transfiere el user_id para especificar qué usuario quieres actualizar.
  3. Usa models.WriteUser para especificar cómo quieres actualizar el usuario.

    #### Initialize API/SDK for more info go here: https://pypi.org/project/looker-sdk
    from looker_sdk import methods40, models
    sdk = looker_sdk.init40()
    me = sdk.me()
    # print(me)
    new_friend = sdk.update_user(user_id=29,
    body=models.WriteUser(first_name="newnew", last_name="new_again"))
    print(new_friend)
  

Cuando uses uno de nuestros SDKs, si utilizas un IDE como Visual Studio Code y haces clic con el botón de comando (F12 en la configuración predeterminada de Visual Studio Code) y, a continuación, seleccionas Ir a definiciones, puedes ver todos los métodos y todos los parámetros aceptados o devueltos por los métodos. También puedes consultarlos en el repositorio de GitHub del SDK. Busca métodos y archivos de modelo.

Opción 2: Solicitudes HTTP con curl o una biblioteca de solicitudes

¿Qué ocurre si no quieres escribir un guion o pasar meses o años aprendiendo un nuevo lenguaje de programación? En ese caso, puedes usar curl para enviar solicitudes HTTP y utilizar la API de Looker.

Una solicitud HTTP envía un mensaje a un destino, que puede ser un servidor, un teléfono o incluso tu smart TV. Hay varios tipos de solicitudes HTTP. La forma en que uses estas solicitudes con la API de Looker depende de la naturaleza del método que envíes como parte de la llamada a la API. Algunos métodos te proporcionan datos, otros envían datos a Looker, otros actualizan datos y otros eliminan o quitan datos de Looker.

Acción Método
Crear POST
Leer GET
Actualizar PUT
Eliminar DELETE

Empecemos a jugar al curling. Zendesk tiene un tutorial muy útil sobre cómo instalar y usar cURL.

Para empezar a hacer llamadas HTTP a la API de Looker, lo primero que debes hacer es llamar al endpoint login de la API de Looker con tu ID de cliente y tu secreto de cliente. De esta forma, se crea un token de acceso. Después, toma este token de acceso y pásalo con cada llamada. El token de acceso asegura que la llamada procede de un usuario autorizado.

En esta página se usan dos tipos de notación para indicar dónde debe sustituir el texto del fragmento de código por su información. Las URLs de instancias alojadas en Looker tienen el formato https://<hostname>.<subdomain>.<domain>.com. Cuando veas esta notación en los ejemplos de esta página, sustituye la sección <hostname>.<subdomain>.<domain>.com por la URL de tu instancia de Looker. Además, usamos la notación <value> para indicar dónde debe introducir el valor adecuado, sustituyendo el <value> del ejemplo de código. Por ejemplo, en el siguiente código, donde se muestra client_id=<value>&client_secret=<value>, sustituye el primer <value> por tu client_id y el segundo <value> por tu client_secret.

Aquí tienes el curl para obtener el token de acceso:

  curl -d "client_id=<value>&client_secret=<value>" https://<hostname>.<subdomain>.<domain>.com:19999/login
  

Esta es la respuesta:

  {"access_token":"ABCDEFGHIJLMNOP1234","token_type":"Bearer","expires_in":3600}
  

Si recibes el token, significa que Looker reconoce tus credenciales de la API. El token se devuelve con un valor expires_in, que indica durante cuánto tiempo es válido el token. Suele ser de unos 60 minutos (3600 segundos).

Ahora que tienes un token de acceso, puedes hacer las llamadas que quieras. Todos los endpoints se enumeran por versión de la API en la documentación de referencia de la API Looker 4.0. Recuerda que el sitio de la comunidad de Looker es un recurso muy útil para preguntar a otros usuarios de Looker cómo aprovechan la API, aprender las prácticas recomendadas o compartir los éxitos que has conseguido con la API.

Supongamos que quieres crear un usuario. Para hacer esto:

  1. Escribe una solicitud curl POST que transfiera tu token para indicar a Looker que tienes autorización.
  2. Incluye un cuerpo, en este caso con formato JSON, para indicar a Looker qué atributos quieres que tenga el nuevo usuario. (Hay algunos campos obligatorios para las llamadas a la API, así que consulta la documentación de la API Looker 4.0).
  3. Termina la notación curl con el endpoint que quieras usar. En este caso, users.

  curl -H "Authorization: token <value>
  " -H "Content-Type: application/json" -d "{\"first_name\": \"<value>\",\"last_name\": \"<value>\", \"email\":\"<value>\"}" https://<hostname>.<subdomain>.<domain>.com:19999/api/4.0/users

-H representa el encabezado y -d representa los datos. Para obtener más información sobre los comandos curl, consulta este gist de GitHub.

Acabas de crear un usuario con el nombre, los apellidos y la dirección de correo electrónico que has introducido anteriormente.

¿Qué ocurre si quieres escribirlo en una secuencia de comandos para no tener que escribir estos comandos cada vez que quieras completar este flujo de trabajo? Puedes usar un lenguaje de programación y una biblioteca como la biblioteca requests de Python.

Por ejemplo, aquí tienes una secuencia de comandos que usa la biblioteca requests para obtener un Look mediante el ID del Look (el <value> en la llamada looks), aplicar un nuevo filtro y, a continuación, descargar los resultados como un archivo CSV:

  import requests
  ID = '<value>'
  SECRET = '<value>'
  PARAMS = {'client_id':<value>,
            'client_secret': <value>}
  URL = "https://<hostname>.<subdomain>.<domain>.com:19999/api/4.0/login"
  r = requests.post(url = <value>, params = <value>, verify=False)
  data = r.json()
  token = data['access_token']
  print(token)
  headers = {'Authorization': "Bearer " + token}
  print(headers)
  look_url = "https://<hostname>.<subdomain>.<domain>.com:19999/api/4.0/looks/<value>"
  look = requests.get(look_url, headers=headers, verify=False)
  json = look.json()
  query = json['query']
  ### ADD MODEL HERE
  ### ADD FILTER
  body = {
      "model":"<value>",
      "view":query['view'],
      "fields":query['fields'],
      "filters":{<value>}
  }
  print(body)
  run_inline = "https://<hostname>.<subdomain>.<domain>.com:19999/api/4.0/queries/run/csv"
  run_query = requests.post(run_inline, headers = headers, json=body, verify=False)
  print(run_query._content)
  print(run_query.url)

Opción 3: Herramientas de desarrollo de software

Herramientas como Postman o Paw permiten a los usuarios interactuar o aprovechar los endpoints de la API a través de una interfaz gráfica de usuario (GUI). El mismo proceso se aplica a una herramienta de desarrollo de software que a las solicitudes HTTP. El primer paso es iniciar sesión con tu secreto de cliente y tu ID de cliente. A continuación, almacena el token de acceso como un token de portador para autorizar las llamadas a la API que se realicen después, como se muestra en Postman.

La interfaz gráfica de usuario de Postman, que contiene una URL POST de Looker, un secreto de cliente y un ID de cliente.

Postman u otras herramientas de desarrollo de software (como Paw) te permiten especificar la autorización, el cuerpo, los parámetros y los encabezados en sus interfaces de usuario y, a continuación, generar la solicitud. También ejecutarán el endpoint cuando pulses Enviar.

¡Adelante! Pero ten cuidado.

Ahora que puedes usar la API de Looker a través de un SDK, una solicitud HTTP y una herramienta de desarrollo de software, ¡puedes empezar a probar cosas! Sin embargo, ten en cuenta que, aunque usar la API puede ayudarte a automatizar procesos como crear o reasignar una programación después de que un usuario deje tu empresa, un uso inadecuado de la API puede dañar una instancia.

Algunos aspectos generales que debes tener en cuenta:

  • Ten cuidado al editar permisos o eliminar usuarios, sobre todo si lo haces en bloque. Es posible eliminar o bloquear a muchos usuarios, incluidos los administradores, y este tipo de acciones no se pueden deshacer fácilmente.
  • Las llamadas a la API aumentan el uso de las instancias, por lo que te recomendamos que las programes para horas de menor actividad y así conseguir un rendimiento óptimo.
  • Hay un límite de archivos abiertos en cada servidor de instancias, por lo que es posible que una instancia falle debido a un uso irresponsable de la API.
  • Prueba los flujos de trabajo y las funciones a pequeña escala antes de añadirlos a la producción.
  • No compartas tus credenciales de API ni las dejes en un archivo al que puedan acceder otros usuarios.

Si tienes alguna pregunta o quieres compartir una idea interesante, consulta la comunidad de Looker. No dudes en ponerte en contacto con nosotros si hay algo que podamos mejorar o si quieres que añadamos algún otro ejemplo a nuestra documentación.