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

Con el Explorador de API 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 instalaste la extensión del Explorador de API desde Looker Marketplace, puedes hacer clic en el Explorador de API en el menú Aplicaciones de Looker para abrir el Explorador de API y ver la documentación actual de la API. Si no instalaste la extensión del Explorador de APIs, puedes instalarla desde la sección Aplicaciones de Looker Marketplace.

Tal vez, con el uso del Explorador de API, descubriste 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. Una pregunta habitual es cómo ejecuto estas llamadas o funciones fuera del Explorador de API. Existen tres formas comunes de acceder a la API:

  1. Kits de desarrollo de software (SDK) 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 comenzar: Autenticación y puertos

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

Para encontrar un ID de cliente y secreto del cliente, haz lo siguiente:

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

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

Si alojas tu propia instancia, consulta con el administrador del sistema el número de puerto. Se puede establecer en el campo URL del host de la API del panel de administración de Looker. Para ello, ve al menú desplegable Administrador en Looker y selecciona API.

Para obtener más información sobre los puertos, ve a la página de documentación Comienza a usar la API de Looker. Los siguientes ejemplos usan un puerto de API de 19999, pero debes confirmar el puerto que usa tu instancia.

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

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

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

Los SDK de Looker contienen todos los extremos de API que podrías querer o necesitas usar, y están empaquetados de una manera que te permite interactuar sin problemas con Looker mediante el lenguaje de programación que prefieras. Te permiten realizar las siguientes tareas:

  • Enviar datos a Looker
  • Obtén datos de Looker
  • Actualiza los datos en Looker
  • Borrar datos en Looker
En la siguiente sección, se analizarán los detalles más detallados de las diferencias entre estas acciones.

Este es 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. Pasas el user_id para especificar qué usuario deseas 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)
  

Mientras usas uno de nuestros SDK, si utilizas un IDE como Visual Studio Code, haces clic en el comando (F12 en la configuración predeterminada de Visual Studio Code) y, luego, seleccionas Ir a Definiciones, puedes ver todos los métodos y los parámetros que aceptan o muestran los métodos. También puedes verlos en el repositorio del SDK de GitHub; busca métodos y archivos de modelos.

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

¿Qué pasa si no quieres escribir un guion ni pasar meses o años aprendiendo un nuevo lenguaje de programación? En ese caso, puedes usar curl para realizar 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 un televisor inteligente. Existen diferentes tipos de solicitudes HTTP. La forma de usar estas solicitudes con la API de Looker depende de la naturaleza del método que pasas 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 borran o quitan datos de Looker.

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

Comencemos con el curling. Para obtener más información, Zendesk tiene un excelente instructivo: Cómo instalar y usar cURL.

Para comenzar a realizar llamadas HTTP a la API de Looker, lo primero que debes hacer es llamar al extremo login de la API de Looker con tu ID y secreto del cliente. Esto crea un token de acceso. Luego, tomas este token de acceso y lo pasas con cada llamada. El token de acceso garantiza que la llamada provenga de un usuario autorizado.

En esta página, se utilizan un par de anotaciones para indicar dónde debes reemplazar el texto de la muestra de código por tu información. Las URLs de las instancias alojadas en Looker tienen el formato https://<hostname>.<subdomain>.<domain>.com. Si ves esta notación en los ejemplos de esta página, reemplaza 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 debes ingresar el valor correspondiente y reemplazar <value> en la muestra de código. Por ejemplo, en el siguiente código, donde muestra client_id=<value>&client_secret=<value>, reemplaza el primer <value> con tu client_id y el segundo <value> con tu client_secret.

Este es el comando curl para obtener el token de acceso:

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

A continuación, se muestra la respuesta:

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

Si recibes el token, significa que Looker reconoce tus credenciales de API. El token se muestra con un valor expires_in, que indica durante cuánto tiempo es válido el token. Por lo general, dura alrededor de 60 minutos (3,600 segundos).

Ahora que tienes un token de acceso, puedes realizar las llamadas que quieras. Todos los extremos se enumeran según la versión de la API en la documentación de referencia de la API de Looker 4.0. Recuerda que el sitio de la Comunidad de Looker es un excelente recurso para hacer preguntas a otros usuarios de Looker sobre cómo utilizan la API, aprender prácticas recomendadas o compartir el éxito que hayas tenido con la API con otros usuarios.

Supongamos que quieres crear un usuario nuevo. Para ello, sigue estos pasos:

  1. Escribe una solicitud POST de curl que pase por tu token para indicarle a Looker que tienes autorización.
  2. Incluye un cuerpo (en este caso, con formato JSON) para indicarle a Looker qué atributos quieres que tenga el usuario nuevo. (Existen algunos campos obligatorios para las llamadas a la API, por lo que debes consultar la documentación de referencia de la API de Looker 4.0).
  3. Finaliza la notación curl con el extremo que deseas 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

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

Acaba de crear un usuario con el nombre, el apellido y la dirección de correo electrónico, que contiene los valores que ingresó anteriormente.

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

Por ejemplo, a continuación, se muestra una secuencia de comandos que usa la biblioteca requests para obtener una vista con el ID de vista (el <value> en la llamada looks), aplicar un filtro nuevo y, luego, 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

Las herramientas como Postman o Paw permiten que los usuarios interactúen o aprovechen los extremos de las APIs a través de una Interfaz gráfica de usuario (GUI). Se aplica el mismo proceso a una herramienta de desarrollo de software que a las solicitudes HTTP. El primer paso es acceder con tu ID de cliente y el secreto de cliente. Luego, almacena el token de acceso como un token del portador para autorizar las llamadas a la API siguientes, como se muestra aquí en Postman.

La GUI de Postman, propagada con una URL de Looker POST, un secreto y un ID de cliente

Postman y otras herramientas de desarrollo de software (como Paw) te permiten especificar la autorización, el cuerpo, los parámetros y los encabezados dentro de sus IU y, luego, generar la solicitud por ti. También ejecutará el extremo cuando presiones send.

¡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, ¡adelante y prueba! Sin embargo, ten en cuenta que, si bien el uso de la API puede ayudar a automatizar procesos como la creación o la reasignación de un programa después de que un usuario abandona tu empresa, el uso inadecuado de la API puede dañar una instancia.

Algunos puntos generales para tener en cuenta:

  • Ten cuidado cuando edites permisos o borres usuarios, especialmente de forma masiva. Es posible borrar o bloquear muchos usuarios, incluidos los administradores, y acciones como esta no se pueden revertir fácilmente.
  • Las llamadas a la API aumentan el uso de las instancias, así que trata de programarlas fuera de horario para obtener un rendimiento óptimo.
  • Hay un límite de archivos abiertos en cada servidor de instancias, por lo que es posible que se produzca una falla en una instancia mediante el uso irresponsable de la API.
  • Prueba flujos de trabajo y funciones a pequeña escala antes de agregarlos a producción.
  • Nunca compartas tus credenciales de API ni las dejes en un archivo en el que otros usuarios puedan acceder a ellas.

Si tienes alguna pregunta o quieres compartir una idea genial, visita la Comunidad de Looker. No dudes en informarnos si hay algo que podamos mejorar o si hay otros ejemplos que te gustaría agregar a nuestra documentación.