Descripción
Power BI Desktop es una aplicación de Windows que se ejecuta en su PC, mientras que Power BI es un servicio en la nube que utiliza a través del navegador web. En ambos casos, podrá realizar las mismas operaciones, con algunas diferencias sutiles. Además, las dos herramientas se complementan entre sí.
Este curso le permitirá comprender cómo mejorar los procesos de negocio en su empresa / proyecto aprovechando las características analíticas y colaborativas disponibles del entorno Power BI. El resultado final del curso será la elaboración de un Dashboard para el control de proyectos, incluyendo el análisis de brechas del presupuesto, curva S, tablero de control con indicadores de gestión de valor ganado.
Modalidad:
Objetivos
Después de completar este curso, los candidatos podrán:
Este curso le permitirá comprender cómo mejorar los procesos de negocio en su empresa / proyecto aprovechando las características analíticas y colaborativas disponibles del entorno Power BI.
Requerimientos:
Solo necesita una dirección de correo electrónico válida para obtener acceso a Power BI. Si no tiene una cuenta de Office 365, Power BI le enviará un correo electrónico con un enlace para completar el proceso de registro. (Tenga en cuenta que no puede utilizar un servicio de correo electrónico personal como Hotmail, Yahoo o Gmail).
Recomendado para:
Aquellos profesionales que busquen mejorar la productividad y reportabilidad de sus empresas/proyectos estableciendo entornos colaborativos que permitan dinamizar y agilizar la toma oportuna de decisiones.
Metodología:
Lo que hace diferente y único a este curso con respecto a otros en el mercado, es que este curso presentará los conceptos de Power BI a través de una visita guiada práctica basada en escenarios de la herramienta, que le mostrará cómo crear soluciones analíticas para casos específicos utilizando Power BI.
Costo de la Inversión:
Planicontrol apuesta por promover el intercambio de conocimiento y dotar a sus candidatos de herramientas que le permitan escalar profesionalmente y generar un elemento diferenciador en sus organizaciones, ofreciendo siempre las mejores tarifas del mercado:
Categoría | Precio |
---|---|
Virtual | USD 275 |
**Descuento de 10% sobre las tarifas mostradas para exalumnos de Planicontrol.
Tarifas preferenciales:
Descuento especial del 10% sobre nuestros precios para exalumnos Planicontrol.
Para saber cómo optar por otras tarifas preferenciales y corporativas, sólo contáctanos a:
// Init style shamelessly stolen from jQuery http://jquery.com | |
var Froogaloop = (function(){ | |
// Define a local copy of Froogaloop | |
function Froogaloop(iframe) { | |
// The Froogaloop object is actually just the init constructor | |
return new Froogaloop.fn.init(iframe); | |
} | |
var eventCallbacks = {}, | |
hasWindowEvent = false, | |
isReady = false, | |
slice = Array.prototype.slice, | |
playerDomain = ''; | |
Froogaloop.fn = Froogaloop.prototype = { | |
element: null, | |
init: function(iframe) { | |
if (typeof iframe === "string") { | |
iframe = document.getElementById(iframe); | |
} | |
this.element = iframe; | |
// Register message event listeners | |
playerDomain = getDomainFromUrl(this.element.getAttribute('src')); | |
return this; | |
}, | |
/* | |
* Calls a function to act upon the player. | |
* | |
* @param {string} method The name of the Javascript API method to call. Eg: 'play'. | |
* @param {Array|Function} valueOrCallback params Array of parameters to pass when calling an API method | |
* or callback function when the method returns a value. | |
*/ | |
api: function(method, valueOrCallback) { | |
if (!this.element || !method) { | |
return false; | |
} | |
var self = this, | |
element = self.element, | |
target_id = element.id !== '' ? element.id : null, | |
params = !isFunction(valueOrCallback) ? valueOrCallback : null, | |
callback = isFunction(valueOrCallback) ? valueOrCallback : null; | |
// Store the callback for get functions | |
if (callback) { | |
storeCallback(method, callback, target_id); | |
} | |
postMessage(method, params, element); | |
return self; | |
}, | |
/* | |
* Registers an event listener and a callback function that gets called when the event fires. | |
* | |
* @param eventName (String): Name of the event to listen for. | |
* @param callback (Function): Function that should be called when the event fires. | |
*/ | |
addEvent: function(eventName, callback) { | |
if (!this.element) { | |
return false; | |
} | |
var self = this, | |
element = self.element, | |
target_id = element.id !== '' ? element.id : null; | |
storeCallback(eventName, callback, target_id); | |
// The ready event is not registered via postMessage. It fires regardless. | |
if (eventName != 'ready') { | |
postMessage('addEventListener', eventName, element); | |
} | |
else if (eventName == 'ready' && isReady) { | |
callback.call(null, target_id); | |
} | |
return self; | |
}, | |
/* | |
* Unregisters an event listener that gets called when the event fires. | |
* | |
* @param eventName (String): Name of the event to stop listening for. | |
*/ | |
removeEvent: function(eventName) { | |
if (!this.element) { | |
return false; | |
} | |
var self = this, | |
element = self.element, | |
target_id = element.id !== '' ? element.id : null, | |
removed = removeCallback(eventName, target_id); | |
// The ready event is not registered | |
if (eventName != 'ready' && removed) { | |
postMessage('removeEventListener', eventName, element); | |
} | |
} | |
}; | |
/** | |
* Handles posting a message to the parent window. | |
* | |
* @param method (String): name of the method to call inside the player. For api calls | |
* this is the name of the api method (api_play or api_pause) while for events this method | |
* is api_addEventListener. | |
* @param params (Object or Array): List of parameters to submit to the method. Can be either | |
* a single param or an array list of parameters. | |
* @param target (HTMLElement): Target iframe to post the message to. | |
*/ | |
function postMessage(method, params, target) { | |
if (!target.contentWindow.postMessage) { | |
return false; | |
} | |
var url = target.getAttribute('src').split('?')[0], | |
data = JSON.stringify({ | |
method: method, | |
value: params | |
}); | |
target.contentWindow.postMessage(data, url); | |
} | |
/** | |
* Event that fires whenever the window receives a message from its parent | |
* via window.postMessage. | |
*/ | |
function onMessageReceived(event) { | |
var data, method; | |
try { | |
data = JSON.parse(event.data); | |
method = data.event || data.method; | |
} | |
catch(e) { | |
//fail silently... like a ninja! | |
} | |
if (method == 'ready' && !isReady) { | |
isReady = true; | |
} | |
// Handles messages from moogaloop only | |
if (event.origin != playerDomain) { | |
return false; | |
} | |
var value = data.value, | |
eventData = data.data, | |
target_id = target_id === '' ? null : data.player_id, | |
callback = getCallback(method, target_id), | |
params = []; | |
if (!callback) { | |
return false; | |
} | |
if (value !== undefined) { | |
params.push(value); | |
} | |
if (eventData) { | |
params.push(eventData); | |
} | |
if (target_id) { | |
params.push(target_id); | |
} | |
return params.length > 0 ? callback.apply(null, params) : callback.call(); | |
} | |
/** | |
* Stores submitted callbacks for each iframe being tracked and each | |
* event for that iframe. | |
* | |
* @param eventName (String): Name of the event. Eg. api_onPlay | |
* @param callback (Function): Function that should get executed when the | |
* event is fired. | |
* @param target_id (String) [Optional]: If handling more than one iframe then | |
* it stores the different callbacks for different iframes based on the iframe's | |
* id. | |
*/ | |
function storeCallback(eventName, callback, target_id) { | |
if (target_id) { | |
if (!eventCallbacks[target_id]) { | |
eventCallbacks[target_id] = {}; | |
} | |
eventCallbacks[target_id][eventName] = callback; | |
} | |
else { | |
eventCallbacks[eventName] = callback; | |
} | |
} | |
/** | |
* Retrieves stored callbacks. | |
*/ | |
function getCallback(eventName, target_id) { | |
if (target_id) { | |
return eventCallbacks[target_id][eventName]; | |
} | |
else { | |
return eventCallbacks[eventName]; | |
} | |
} | |
function removeCallback(eventName, target_id) { | |
if (target_id && eventCallbacks[target_id]) { | |
if (!eventCallbacks[target_id][eventName]) { | |
return false; | |
} | |
eventCallbacks[target_id][eventName] = null; | |
} | |
else { | |
if (!eventCallbacks[eventName]) { | |
return false; | |
} | |
eventCallbacks[eventName] = null; | |
} | |
return true; | |
} | |
/** | |
* Returns a domain's root domain. | |
* Eg. returns http://vimeo.com when http://vimeo.com/channels is sbumitted | |
* | |
* @param url (String): Url to test against. | |
* @return url (String): Root domain of submitted url | |
*/ | |
function getDomainFromUrl(url) { | |
var url_pieces = url.split('/'), | |
domain_str = ''; | |
for(var i = 0, length = url_pieces.length; i < length; i++) { | |
if(i<3) {domain_str += url_pieces[i];} | |
else {break;} | |
if(i<2) {domain_str += '/';} | |
} | |
return domain_str; | |
} | |
function isFunction(obj) { | |
return !!(obj && obj.constructor && obj.call && obj.apply); | |
} | |
function isArray(obj) { | |
return toString.call(obj) === '[object Array]'; | |
} | |
// Give the init function the Froogaloop prototype for later instantiation | |
Froogaloop.fn.init.prototype = Froogaloop.fn; | |
// Listens for the message event. | |
// W3C | |
if (window.addEventListener) { | |
window.addEventListener('message', onMessageReceived, false); | |
} | |
// IE | |
else { | |
window.attachEvent('onmessage', onMessageReceived, false); | |
} | |
// Expose froogaloop to the global object | |
return (window.Froogaloop = window.$f = Froogaloop); | |
})(); |