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
Contraseña: Haz clic aquí y genera una Contraseña de Aplicación.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
Convierte el registro de datos en una tabla
Ve a la pestaña Convertir > Selecciona el registro de datos > Haz clic en "En tabla".
Convierte la lista en una tabla
Selecciona la lista > Haz clic en "En tabla".
Expande los registros a columnas
Haz clic en el ícono junto a Columna1 > luego, en el cuadro emergente, clic en OK.
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.
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
GetRecordsPerPageHaz clic en "Hecho".
Establece el nombre como "ObtenerRegistrosPorPagina".
Aceptar.
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
SourceCrea 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.