Carga Incremental de Dimensiones usando SSIS Lookup - Curso DW + BI

แชร์
ฝัง
  • เผยแพร่เมื่อ 9 พ.ย. 2024

ความคิดเห็น • 98

  • @BILATAM
    @BILATAM  5 ปีที่แล้ว +13

    No olviden dejar un like y comenten que más quieren para los nuevos videos. Y claro sus dudas y comentarios.

  •  5 ปีที่แล้ว +16

    Un vídeo de estándares y buenas prácticas. Sería genial ambos temas en el canal.
    Saludos.

    • @BILATAM
      @BILATAM  5 ปีที่แล้ว +7

      Vamos a trabajar en el entonces!

  • @jperezts
    @jperezts 5 ปีที่แล้ว +3

    Eres una de las pocas personas que hacen este tipo de vídeo, usualmente las cosas se van más del lado de programación, pls no nos dejes solos!!

    • @BILATAM
      @BILATAM  5 ปีที่แล้ว +2

      Vamos a seguir con este tipo de videos hasta que tenga fuerzas. De verdad me apasiona mucho el Business Inteligence y vienen cosas nuevas al canal!!

  • @ppladino
    @ppladino 3 ปีที่แล้ว +1

    Excelente video señor Oviedo, muy clara la explicación

  • @ivanachucoff2199
    @ivanachucoff2199 4 ปีที่แล้ว +3

    Muchas gracias por tú tiempo y la pasión que le ponés a tus videos! Disfruto mucho escuchándote y aprendiendo. Soy nueva en este mundo y tu canal me super sirvió. Un saludo desde Argentina! Gracias de nuevo!

    • @BILATAM
      @BILATAM  4 ปีที่แล้ว +2

      Gracias por tomarse el tiempo para comentar, de verdad me alegra mucho poder ayudar y saber que lo que hago le hace bien a la comunidad. Gracias Ivana, un abrazo.

  • @ALODV87
    @ALODV87 3 ปีที่แล้ว +1

    Excelente toda esta serie de DW+BI, estoy empezando en esto y ya tengo lo necesario para ir traveseando un poco, pura vida mae por tomarse el tiempo, ojalá puedas seguir con estos vídeos, bendiciones!!

  • @LuisitoDTS
    @LuisitoDTS 11 หลายเดือนก่อน

    Muchas gracias por tus enseñanzas he aprendido bastante gracias a ti que Dios te bendiga

  • @andressoto6912
    @andressoto6912 5 ปีที่แล้ว +1

    Muchas Gracias Cesar, hoy lo puse en practica en mi trabajo y me salió de maravilla, solo le tuve que agregar un converter porque mi origen es oracle y mi destino sql server, pero nada del otro mundo. Muchas Gracias

    • @BILATAM
      @BILATAM  5 ปีที่แล้ว

      Genial! De verdad me gista mucho saber que el canal esta ayudando. Graciad por seguir el canal y vamos con todo!!!

  • @ersotocochon
    @ersotocochon 4 ปีที่แล้ว +2

    Nuchas Gracias , excelente tutorial , claro y conciso.

  • @elizabetarojas7105
    @elizabetarojas7105 5 ปีที่แล้ว +3

    Muy importante lo que haces, porque la mayoría de los videos son superficiales, pero es muy bueno ver casos reales y problemas que pueden ocurrir a la hora de hacer un poryecto. Me gustaría saber según tu experiencia cuales son los problemas fundamentales a la hora de realizar los ETL, sobre todo a la hora de la carga y la transformación de datos. Gracias por tu aporte.

    • @BILATAM
      @BILATAM  5 ปีที่แล้ว

      Muchas gracias Elizabeta, siempre la idea del canal ha sido crear tutoriales y cursos bien prácticos de DW, ahora sobre lo que plantea de problemas comunes a la hora del ETL me suena a hacer un video sobre ello, así que esté atenta al contenido. Gracias.

  • @dariom5073
    @dariom5073 3 ปีที่แล้ว

    gracias!!
    Lo estuve probando tambien con la funcion Hashbytes para acelerar la busqueda de diferencias en datos existentes

  • @guillermoricardospindolabr7781
    @guillermoricardospindolabr7781 5 ปีที่แล้ว +1

    Es magnifico este video, yo realice un ejercicio similar, pero en vez de Ignorar el error , coloque la opción de Redirigir filas a resultados no coincidentes. De esta manera cuando no existen los registros en la dimensión los inserta, de lo contrarios los manda a los existentes y de ahí con una condición le pregunto que si alguno de los registros cambio su valor lo actualice.

    • @evett16
      @evett16 4 ปีที่แล้ว

      Hola Guillermo, disuclpa puedo saber que condicion utilizas para saber si un registro cambio? Y en donde pones la condicion? Disculpa soy muy nueva en esto y estoy aprendiendo. Gracias

  • @tatianamarcelausugaarboled1960
    @tatianamarcelausugaarboled1960 3 ปีที่แล้ว

    Super chévere el curso, muchas gracias, me sirvió un montón!
    Desearía que hagas una parte con Analysis Servers y terminar el proceso con azure porque explicas muy bien! y yo soy nueva en todos los temas de BI.
    Ver vídeos de ésta calidad son difíciles en TH-cam, pero sé que todo lo he entendido porque cuando me evalúan estoy en lo correcto gracias a sus términos , practicas y la documentación de Microsoft jajaja.
    Me encantaría saber más sobre el tema y ya me suscribí.
    Saludos desde Colombia. :D

  • @harryferrera6207
    @harryferrera6207 4 ปีที่แล้ว +1

    Muy bien video. Tengo dos preguntas y una sugerencia. 1 Se podrían tambien contemplar los deleted? 2 Incremental loading aplicando lookup funciona con tablas grandes, por ejemplo por encima de 10 millones de registros? 3 Me gustaría ver un video de incremental loading aplicando change tracking. Muchas gracias por tus aportes.

  • @vitalivs7249
    @vitalivs7249 4 ปีที่แล้ว +1

    Gracias, me ha servido mucho tu vídeo. Buen trabajo.

    • @BILATAM
      @BILATAM  4 ปีที่แล้ว

      Mil gracias!!! De verdad es un placer ayudar

  • @Floopa_dios
    @Floopa_dios 3 ปีที่แล้ว +1

    excelente, gracias por compartir tu conocimiento

  • @salomonlondono8753
    @salomonlondono8753 3 ปีที่แล้ว +1

    Excelente video, felicitaciones, me ayudó muchisimo

    • @BILATAM
      @BILATAM  3 ปีที่แล้ว

      Que bueno ser de ayuda. Saludos Salomón.

  • @elen247
    @elen247 4 ปีที่แล้ว

    Muy bueb video, seria importante tener un video para tecnicas de carga incremental para tablas de hechos

  • @elmarlopez3020
    @elmarlopez3020 4 ปีที่แล้ว +1

    Excelente, gracias me ayudo mucho. Saludos y Felicitaciones

    • @BILATAM
      @BILATAM  4 ปีที่แล้ว

      Gracias Elmar!

  • @jonattanandrezblancobaron9074
    @jonattanandrezblancobaron9074 5 ปีที่แล้ว +1

    Excelente explicación, funciono perfecto, muchas gracias.

    • @BILATAM
      @BILATAM  5 ปีที่แล้ว

      Gracias Jonathan! Me alegra que le funcione, y a seguir con más.

  • @armandomendoza8630
    @armandomendoza8630 3 ปีที่แล้ว

    Excelente forma de explicar, gracias :D

  • @ulisescruzgonzalez2677
    @ulisescruzgonzalez2677 4 ปีที่แล้ว +1

    muy buen video , muchas gracias

  • @orlandoflorida6079
    @orlandoflorida6079 4 ปีที่แล้ว

    Hola, de antemano muchas gracias por el esfuerso de transmitir su conocimiento, es muy valioso. Tengo la siguiente pregunta, en el Conditional Split en la parte de modificar hay un error cuando en un campo se compara algun dato que venda nulo ¿Cual es la manera de corregir esto? Gracias

  • @rhadimerantigua7891
    @rhadimerantigua7891 7 หลายเดือนก่อน

    Excelente video, tengo el siguiente escenario, necesito hacer una carga incremental, de una vista pero en la vista no tengo una llave de negocio, no tengo un valor único. Como se haría en ese caso?

  • @javiercustodioore778
    @javiercustodioore778 4 ปีที่แล้ว +1

    buen video maestro

    • @BILATAM
      @BILATAM  4 ปีที่แล้ว

      Gracias Javier.

  • @juanca192007
    @juanca192007 ปีที่แล้ว

    excelente video!!

  • @junioracunamorante
    @junioracunamorante 4 ปีที่แล้ว

    EXCELENTE VIDEO, una consulta es recomendable usar la TAREA EJECUTAR SQL Y DENTRO DE ELLO USAR TRANSACT CON MERGE INTO PARA HACER CARGAS INCREMENTAL, GRACIAS ANTEMANO

  • @antoniyc138
    @antoniyc138 4 ปีที่แล้ว +1

    Buenas, que tanto recomiendas usar la tarea de control cdc para hacer la carga incremental, y si has tenido alguna experiencia buena/mala con este task en producción . Gracias.Saludos.

  • @cristiaan3003
    @cristiaan3003 4 ปีที่แล้ว

    Hola. Muy bueno vídeos. Te quería pedir si puedes agregar vídeos de esta temática del ETL y DW, pero creando un mini proyecto desde cero hasta el datamart y su actualización como si estuviera en producción . Por ejemplo que se reciban datos exportados desde un sistema transaccional a un MS SQL en varias tablas (todos los días 3 a.m.) de una db deposito, el pasaje al staging área (que puede ser la database: DBstaging) donde estan staging de dimensiones o facts, pasar los datos de las tablas staging a las tablas dimensionales y fact definitivas ( que pueden estar en otra database, DWbase) y por ultimo la planificación de todas estas tareas en Jobs de mssql para que todos los dias mssql ejecute los packages y procedimientos almacenados del staging y cargue las dimensiones y facts.

  • @rodrigosalazarperez8217
    @rodrigosalazarperez8217 5 ปีที่แล้ว +1

    Muy buen vídeo, todo muy claro!

    • @BILATAM
      @BILATAM  5 ปีที่แล้ว

      Gracias Rodrigo

  • @laflopy23
    @laflopy23 5 ปีที่แล้ว +2

    Me encanto mil graciasssssssssssssssss

  • @adolfogorjon9989
    @adolfogorjon9989 2 ปีที่แล้ว +1

    Muy buen video, me sirvio bastante la parte de Agregar los registros nuevo, lo que no entiendo es el por que el ISNULL, osea si el ID es nulo osea vacio los inserta pero no me queda claro en como hace la comparativa entre el id del origen y el del lookup :(

    • @mariovargascareaga
      @mariovargascareaga 10 หลายเดือนก่อน

      hace una comparacion de origen - destino , si el id de origen isnull en destino es decir si no esta presente , pues lo inserta , para eso usa el lookup para buscar y comparar los id entre ambas tablas

  • @HANRRRRRROUS
    @HANRRRRRROUS 4 ปีที่แล้ว +1

    Bro, que buen video, me ayudo mucho. Gracias !!!

    • @BILATAM
      @BILATAM  4 ปีที่แล้ว

      Gracias Haroun

  • @jehissonjavierbellobernal3014
    @jehissonjavierbellobernal3014 2 ปีที่แล้ว +1

    Buen día amigo, un favor gigante estoy adentrándome en el mundo de las ETL con visual studio y debo hacer una etl que me lea los registros origen (SQL) y actualice los registros que sufrieron alguna actualización en el Destino (ODBC) , agradezco si me ayudas con una guía o como debo investigar para resolverlo. Muchas gracias.

  • @cbertolez
    @cbertolez 3 ปีที่แล้ว +1

    buen video!

    • @BILATAM
      @BILATAM  ปีที่แล้ว

      Gracias! Saludos

  • @luislluen531
    @luislluen531 5 ปีที่แล้ว +1

    Muy interesante, y buena explicación!!

    • @BILATAM
      @BILATAM  5 ปีที่แล้ว

      Gracias Luis. Espero que le sea de ayuda en sus próximos proyectos de Data Warehouse.

    • @luislluen531
      @luislluen531 5 ปีที่แล้ว

      @@BILATAM Deberías hacer un video de los stageng y mejores practicas para esta BD, tengo un excel de documentación de las tablas para creación de un DW, si me indicas un correo te lo puedo proporcionar. Slds

    • @luislluen531
      @luislluen531 5 ปีที่แล้ว

      @@BILATAM Pregunta, cuando yo creo la tabla DimProducto, la columna ProductoID que es autoincremental, debe ser Primary Key? Si es correcto, quiere decir que todas las dimensiones debe tener un primary key autoincremental, al igual que el la tabla Fact?. Gracias

  • @nietoroger
    @nietoroger 5 ปีที่แล้ว +1

    Hola, gracias por el ejemplo... pero por qué no usaste mejor un slow update dimensions?

    • @BILATAM
      @BILATAM  5 ปีที่แล้ว

      Yo en los proyectos o tablas "pequeños" si uso el Slowly Changing Dimension. Pero siempre es muy discutible el rendimiento de este componente. En el video usé una opción que da mejor rendimiento que el componente SCD.

    • @diegoguerra7983
      @diegoguerra7983 4 ปีที่แล้ว

      @@BILATAM es correcto, al usar Slowly Changing Dimension para cargar tablas(Dimensiones) con columnas de tipo atributo variable demora mucho mas que hacerlo con un Lookup. Se recomienda usarlo para tablas que no suelen actualizar sus campos frecuentemente.
      P. D.: Excelente vídeo amigo!

  • @nicoleangulo1644
    @nicoleangulo1644 4 ปีที่แล้ว +1

    Hola César, éste es tu último video del curo DW+BI?

    • @BILATAM
      @BILATAM  4 ปีที่แล้ว

      Es que no he tenido tiempo :( pero no en teoría seguimos. Lo siento por cortar el curso así, tengo que retomarlo pronto

    • @nicoleangulo1644
      @nicoleangulo1644 4 ปีที่แล้ว +1

      Siii, retomalo por favor, está muy bueno... Y me quedé intrigada

  • @gustavoleal3397
    @gustavoleal3397 4 ปีที่แล้ว +1

    En la parte del "Conditional Split" (o antes) ¿no habria una forma de concatenar source y lookup para luego validar esa concatenación o usar un campo calculado de CHECKSUM?

    • @BILATAM
      @BILATAM  4 ปีที่แล้ว

      Si correcto, de hecho una forma bastante común de optimizar esta carga es por medio del checksum. Sin embargo al ser este video introductorio al SSIS pues no lo vi como lo mejor para alguien que ir está empezando.

  • @JeanZelada
    @JeanZelada 5 ปีที่แล้ว +1

    El ejemplo aplica muy bien para una cantidad de registros limitada, para volúmenes grandes de datos un lookup y un update serían demasiado costoso en tiempo y recursos. Sería más óptimo el uso de tablas temporales o hash

    • @BILATAM
      @BILATAM  5 ปีที่แล้ว +1

      Correcto, dependiendo del volumen el SSIS inclusive se queda corto. Más que de acuerdo, voy ha hacer una segunda parte con Hash y alguna otra estrategia de carga para ejemplificar mejor otros escenarios.

    •  5 ปีที่แล้ว

      Para grandes cantidades de data sí sería pesado, pero recuerde que esto es para cargar una dimensión, la cual normalmente no llegan a crecer demasiado, entonces este método es eficaz y eficiente para la mayoría de las dimensiones de tamaño regular mediano o pequeño.

    • @emperador2896
      @emperador2896 5 ปีที่แล้ว

      @@BILATAM espero con ansias ese video

  • @rennyvalera9124
    @rennyvalera9124 4 ปีที่แล้ว +1

    tu vídeo me fue de mucha ayuda sin embargo hay una excepción que necesito manejar en caso de una interrupción forzada durante el proceso de inserción y no tengo un indice durante dicha inserción ya que el origen es un flat file source que luego paso por un script y obtengo los datos para luego insertarlos en su respectiva tabla, algúna idea de como podría sortear ese evento borde en el que se apague el servidor durante la inserción??

    • @rennyvalera9124
      @rennyvalera9124 4 ปีที่แล้ว

      de antemano muchas gracias @Business Intelligence LATAM

    • @BILATAM
      @BILATAM  4 ปีที่แล้ว

      En el caso de interrumpir el proceso se requiere usar “transaction option” = required. Para agregar transacciones al ETL. Sin embargo lo normal, en procesos de ETL para Data Warehouse que el mismo ETL maneja cómo continuar el proceso a partir de donde falló o incrementalmente.

    • @rennyvalera9124
      @rennyvalera9124 4 ปีที่แล้ว

      @@BILATAM Esto tambien funciono muchas gracias, tendrás un tutorial de como configurar correctamente el script task (transformation) con multiples salidas, necesito dividir las columnas que salen de ese script task para insertar dos tablas distintas dentro de la misma base de datos pero si lo hago con el muticast da un error de conexión a base de datos.

  • @rvgfox
    @rvgfox 5 ปีที่แล้ว +2

    Muy interesante el vídeo Cesar, pero le veo varias pegas. En primer lugar, si la dimensión tiene muchos atributos, el lookup puede ser muy pesado y la comprobación de si los registros muy farragosa al tener que escribir mucho código en la expresión de comprobación. Yo suelo utilizar un componente free para generar un hash del registro y comparar el hash....

    • @BILATAM
      @BILATAM  5 ปีที่แล้ว

      Correcto el utilizar un Hash es una muy buena idea. Voy a hacer una versión 2 del video con hash. Gracias Ramon, exactamente a eso me refería con que cada quien tiene sus formas de cargar las dimensiones.

    • @josedanielplasencia7678
      @josedanielplasencia7678 4 ปีที่แล้ว

      Hola me puedo comunicar contigo para preguntarte algo sobre utilizar hash?

  • @oscaralfaro2456
    @oscaralfaro2456 4 ปีที่แล้ว +1

    Cesar una consulta queremos hacer na arquitectura de business inteligence a una farmacia de medicamentos como podriamos implementarla

    • @BILATAM
      @BILATAM  4 ปีที่แล้ว +1

      En realidad es una pregunta muy general, pero si recomendaría que inicien pensando bien la arquitectura y que no la inventen. Cuando se inicia es muy común hacer “mi versión de BI”. Y a la larga les queda corta de alcance.

  • @oscaralfaro2456
    @oscaralfaro2456 4 ปีที่แล้ว +1

    Una pregunta pero eso solo para una DimProducto si quisieras agregar mas Dimensiones y llenar la tabla de hechos tendrias que hacer separado todo?

    • @BILATAM
      @BILATAM  4 ปีที่แล้ว +1

      Correcto, cada proceso de carga se debe hacer por separado. Ese es un error común, por pereza de hacer más paquetes de SSIS intentan llenarlos de todo. En lo personal yo creo un paquete por tabla que cargo al stage y un paquete por Dimensión, es decir terminó creando fácilmente más de 50-100 SSIS por proyecto.

    • @BILATAM
      @BILATAM  4 ปีที่แล้ว +1

      Se busca que cada paquete de SSIS sea “atómico” es decir que cumpla una única responsabilidad

    • @oscaralfaro2456
      @oscaralfaro2456 4 ปีที่แล้ว +1

      @@BILATAM gracias porque me has sacado de otra duda yo estaba equivocado entonces yo he estado practicando que en el mismo paquete hacia todo. Otra duda que tengo cuando estas llenando las dimensiones o hechos a traves del ETL como hacer para que no te pase los mismos cada ves que ejecutas ya que si tenemos una tabla con millones de registros tardara mucho en pasar lo mismo y talves en la oltp solo se agregaron 20 registros nuevos. He estado probando con consultas por ejemplo ver el max idproducto y que solo me pase los que sean mayores al max encontrado cuando ejcute la.prinera carga

    • @BILATAM
      @BILATAM  4 ปีที่แล้ว +1

      Un gusto Oscar. Y gracias por seguir el canal! Un abrazo

    • @oscaralfaro2456
      @oscaralfaro2456 4 ปีที่แล้ว +1

      @@BILATAM ahi esperando a que subas nuevos tutoriales ya que ayudan un monton ya son las 1 de la mañana en mi pais y yo viendo aun los videos porque no me queria salir el de modificar pero ya

  • @oscaralfaro2456
    @oscaralfaro2456 4 ปีที่แล้ว

    Cesar tengo un clavo cuando ejecuto el proyecto si la tabla dimProducto ya tiene los registros me da un error el la division condicional y me envia que el modificar no se puede ejecutar pero en la condicion esta bien no me da error donde el origen de los datos los compara con los de busqueda

  • @evett16
    @evett16 4 ปีที่แล้ว +1

    Hola, me gustaria hacerte una pregunta, cual es el metodo mas rapido para hacer un delta load? He escuchado que utilizando hash el proceso es mas rapido. Me interesa para la carga de las tablas en un staging area. Y existe una tabla que tiene alrededor de 20 millones de registros. Asi que si podrias por favor hacer un video de como hacer el delta load con hash te estaria mas que agradecida. Aparte nose si se deberia hacer la carga por paquetes? aunque tampoco se como funciona? Crees que podrias hacer por favor un video de esoß
    perdon por mis faltas ortograficas, no tengo tilde.
    Saludos

    • @BILATAM
      @BILATAM  4 ปีที่แล้ว +1

      Tengo que have un video sobre el tema... no es fácil explicarlo por mensajes. Este será el siguiente en la lista de los videos de Data Warehouse y ETL

    • @evett16
      @evett16 4 ปีที่แล้ว

      @@BILATAM ,muchas gracias. Lo voy a estar esperando con ansias! Saludos cordiales :)

  • @karendn20
    @karendn20 ปีที่แล้ว +2

    Excelente video. Pero en mi caso no me funciona xq el source el cuál no es local tiene 2millones de records y el componente "database source" sólo lee 475mil records y luego falla con el siguiente error: "[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The PrimeOutput method on ODBC Denodo Workers FULL Source returned error code 0x80004005. The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing." Sabes a que se debe? e investigado todo el día y no he podido solucionarlo. Saludos desde Costa Rica ☺

    • @BILATAM
      @BILATAM  ปีที่แล้ว +1

      Si la transformación es muy grande, lo recomendable es que se haga desde la BD, puede ser un Merge o un simple Insert y update. El SSIS no es tan bueno cuando se trata de volúmenes altos

  • @davidyupanquidiaz5007
    @davidyupanquidiaz5007 3 ปีที่แล้ว +1

    el update no hace lenta la transaccion ?

    • @BILATAM
      @BILATAM  3 ปีที่แล้ว +1

      Claro que si. Eso es parte de las problemáticas que hay que manejar. Por esto mismo muchas estrategias de carga solo insertan en lugar de modificar. Todo depende de la estrategia de carga.

  • @andresjscp
    @andresjscp 3 ปีที่แล้ว +1

    Hay alguna posibilidad que el destino sea postgreesql.....tengo un cliente que no usa sql server .....

    • @BILATAM
      @BILATAM  3 ปีที่แล้ว +1

      Si, siempre y cuando tenga el provider instalado tanto en la maquina de desarrollo como en el servidor de producción

    • @andresjscp
      @andresjscp 3 ปีที่แล้ว

      @@BILATAM En cuando al provider instaldo te refieres Componente de flujo para postgree??.. Seria interesante sincronización de tablas con herramientas SSIS ya que se usa dos bases de datos diferentes Mysql y postgreesql ... Y tambien hablar de Data Lake solo si es posible...

  • @tomassalas7790
    @tomassalas7790 4 ปีที่แล้ว +1

    Alguna forma de comunicarse con ustedes ?

    • @BILATAM
      @BILATAM  4 ปีที่แล้ว

      Escríbeme al Facebook de Business Intelligence LATAM, y por ahí nos hablamos!

  • @junioracunamorante
    @junioracunamorante 4 ปีที่แล้ว

    Estimado, y que pasa con los que no hacen math , osea si en la tablaA no existe y en la tabla DWtablaA si existe , alli tendria que eliminar, falta esoo

  • @hafis3460
    @hafis3460 4 ปีที่แล้ว +1

    falto para la tabla de hechos :c

  • @desarrolladorbi9108
    @desarrolladorbi9108 3 ปีที่แล้ว +1

    excelente me fue de muchas ayuda gracias