Integración con Power BI

Importa tus entradas de tiempo desde TrackingTime a Power BI.

Julia Chulman avatar
Escrito por Julia Chulman
Actualizado hace más de una semana

Configuración utilizando un archivo de Power BI

Paso 1: Descarga el archivo de Power BI (descárgalo aquí).

Paso 2: Abre el archivo con Power BI.

Paso 3: Ve a TrackingTime y genera una contraseña de aplicación (haz clic aquí).

Paso 4: Regresa a Power BI y coloca en el nombre de usuario: API_TOKEN y en la contraseña la generada en el Paso 4.

Configuración manual

Paso 1: Inicia Power BI Desktop en tu computadora

  • Inicia Power BI Desktop en tu computadora si aún no lo has hecho.

Paso 2: Obtén Datos Desde la Web

  • Haz clic en "Inicio" en el menú superior.

  • Selecciona "Obtener datos".

  • En la ventana "Obtener datos", desplázate hacia abajo y elige "Web".

Paso 3: Configura la Fuente de Datos Web

  • En la parte superior, selecciona la opción avanzada y completa el formulario.

  • Partes de la URL (1)

    https://api.trackingtime.co/api/v4/events
  • Partes de la URL (2)

    ?include_custom_fields=true@filter=COMPANY&from=2018-01-01&to=2030-01-01
  • Encabezado de la solicitud HTTP:

    application/json

Paso 4: Autorizar

  • Después de haber ingresado la URL de la fuente de datos web y hacer clic en "Aceptar",

  • Selecciona "Básico"

    Nombre de usuario:

    API_TOKEN

    Coloca la contraseña de la aplicación que generaste en TrackingTime.

  • Haz clic en Conectar.

Paso 5: Formatea los datos Json en una tabla

  1. Convierte el registro de datos en una tabla

    Ve a la pestaña Convertir > Selecciona el registro de datos > Haz clic en "En tabla".

  2. Convierte la lista en una tabla

    Selecciona la lista > Haz clic en "En tabla".

  3. Expande los registros a columnas

    Haz clic en el ícono junto a Columna1 > luego, en el cuadro emergente, clic en OK.

  4. Cambia los nombres de las columnas

    Ahora verás tus datos como una tabla y tendrás que cambiar los nombres de las columnas.

  • Haz clic derecho en la consulta > Editor avanzado

  • Pega el código a continuación.

  • Haz clic en Guardar.

= Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"id", "s", "e", "d", "se", "seid", "c", "cid", "p", "pid", "pn", "pif", "t", "tid", "tt", "tv", "tl", "dd", "et", "a", "u", "uid", "uhr", "uhc", "uau", "tz", "n", "co", "r", "b", "bd", "to", "er", "rf", "re", "rgi", "ety", "uci", "cci", "sci", "has_files", "toi", "users"}, {"ID", "Start", "End", "Duration", "Service", "Service Id", "Customer", "Customer Id", "Project", "Project Id", "Project Notes", "Project is favorite", "Task", "Task Id", "Task Type", "Task Visibility", "Task List", "Due Date", "Estimated Time", "Is Archived", "User", "User Id", "User Hourly Rate", "User Hourly Cost", "User Avatar Url", "Timezone", "Notes", "Color", "Hourly Rate", "Is Billable", "Is Billed", "Icalendar Token", "Event Repeat", "Repeat Rrequency" , "Repeat Every", "Repeat Group Id", "Event Type", "User Color Index", "Customer Color Index", "Service Color Index", "Has files", "Time Off Id", "Users"})

Paso 6: Paginación (opcional)

Si tienes más de 5000 resultados, necesitarás implementar la paginación. Para hacerlo, debes utilizar el editor avanzado para implementar un código personalizado que transforme la consulta para recuperar múltiples páginas y luego fusionar los datos en un único conjunto de datos.

  1. Transforma la consulta en una función para obtener los resultados de una sola página

    • Crearemos una función llamada "ObtenerRegistrosPorPagina"

    • Haz clic derecho sobre la consulta y selecciona "Editor Avanzado"

    • Pega el siguiente código en el cuadro:

    let
    GetRecordsPerPage = (page) =>
    let
    Source = Json.Document(Web.Contents("https://api.trackingtime.co/api/v4/events/min?include_custom_fields=true&filter=COMPANY&from=2016-01-01&to=2030-01-01&page=" & Text.From(page) & "&page_size=1000", [Headers=[#"Content-Type"="application/json"]])),
    #"Converted to Table1" = Record.ToTable(Source),
    Value = #"Converted to Table1"{1}[Value],
    #"Converted to Table" = Table.FromList(Value, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"id", "s", "e", "d", "se", "seid", "c", "cid", "p", "pid", "pn", "pif", "t", "tid", "tt", "tv", "tl", "dd", "et", "a", "u", "uid", "uhr", "uhc", "uau", "tz", "n", "co", "r", "b", "bd", "to", "er", "rf", "re", "rgi", "ety", "uci", "cci", "sci", "has_files", "toi", "users"}, {"ID", "Start", "End", "Duration", "Service", "Service Id", "Customer", "Customer Id", "Project", "Project Id", "Project Notes", "Project is favorite", "Task", "Task Id", "Task Type", "Task Visibility", "Task List", "Due Date", "Estimated Time", "Is Archived", "User", "User Id", "User Hourly Rate", "User Hourly Cost", "User Avatar Url", "Timezone", "Notes", "Color", "Hourly Rate", "Is Billable", "Is Billed", "Icalendar Token", "Event Repeat", "Repeat Rrequency" , "Repeat Every", "Repeat Group Id", "Event Type", "User Color Index", "Customer Color Index", "Service Color Index", "Has files", "Time Off Id", "Users"})
    in
    #"Expanded Column1"
    in
    GetRecordsPerPage

    • Haz clic en "Hecho".

    • Establece el nombre como "ObtenerRegistrosPorPagina".

    • Aceptar.

  2. Crea una función para obtener la cantidad total de registros que tienes.

    • Crearemos una función llamada "ObtenerCantidadDeRegistros".

    • Haz clic derecho en la función "ObtenerRegistrosPorPagina" y selecciona "Duplicar" y luego "Editar".

    • Establece el nombre como "ObtenerCantidadDeRegistros" y pega el siguiente código.

    let
    Source = () => let
    Source = Json.Document(Web.Contents("https://api.trackingtime.co/api/v4/events/count?filter=COMPANY&from=2016-01-01&to=2030-01-01", [Headers=[#"Content-Type"="application/json"]])),
    #"Converted to Table1" = Record.ToTable(Source),
    Value = #"Converted to Table1"{1}[Value],
    #"Converted to Table" = Record.ToTable(Value)
    in
    #"Converted to Table"
    in
    Source

  3. Crea una función para fusionar todas las páginas.

  • Crearemos una función llamada "CombinarPáginas".

  • Haz clic derecho en la función "ObtenerCantidadDeRegistros" y selecciona "Duplicar" y luego "Editar".

  • Establece el nombre como "CombinarPáginas" y pega el siguiente código.

let
NumPages = (List.First(GetCountRecords()[Value]) / 1000) + 1,

Data = Table.Combine(List.Generate(
() => [Page = 0, Information = GetRecordsPerPage(0)],
each [Page] < NumPages,
each [Page = [Page] + 1, Information = GetRecordsPerPage([Page])],
each [Information]
))

in
Data

Paso 7: Crear Visualizaciones

Ahora que tus datos web están importados en Power BI, puedes seguir adelante y crear visualizaciones, analizar los datos y construir informes para obtener ideas.

¿Ha quedado contestada tu pregunta?