Jekyll2022-11-28T13:09:08-05:00https://refinepro.com/feed.xmlRefineProTurn data into competitive advantagesBackend Python and JavaScript ETL developer2021-10-07T00:00:00-04:002021-10-07T00:00:00-04:00https://refinepro.com/blog/backend-python<div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/Hiring_202101.jpg" width="100%" /></div> <div><br /></div> <h3 id="introduction">Introduction</h3> <p>We are a small data-driven company looking for a senior or mid-level ETL developer. We offer an organized remote work environment with colleagues across the world. We don’t ask you to know everything, but we ask that you always stay ready to learn. In exchange we promise to provide you with a dynamic work environment that promotes sharing, learning, and a fondness for the power of data. Learn more below! We can’t wait to hear from you.</p> <h3 id="about-the-job">About the Job</h3> <ul> <li>Job Type: Full time and permanent</li> <li>Job Location: Remote with the option to find co-workers and offices in Toronto or Montreal.</li> <li>Timezone: America</li> <li>Experience: Senior and mid-level (5+ years of relevant experience)</li> <li>Role: Python and JavaScript ETL Developer: Integration Team.</li> <li>Compensation: Based on experience</li> <li>Industry: Consulting Data services</li> <li>Company Size: 5 to 15 employees</li> </ul> <h3 id="who-are-we">Who are we?</h3> <p>At RefinePro, we believe that access to data is key to understand today’s challenges.</p> <p>That’s why, we have been designing, developing and monitoring hundreds of data pipelines with a focus on data engineering and operational excellence since 2014. Our goal? Make sure data is within everyone’s reach. Our clients rely on our data feed to gather new insights and build products or services. We help our customers transform the insurance, retail, compliance, and manufacturing industries. We provide them with data strategy, system architecture, implementation and outsourcing services.</p> <p>And to achieve our mission, we:</p> <ul> <li>Always put our customer’s needs at the center of our operation,</li> <li>Keep data quality in mind at all time, and</li> <li>Invest early on DevOps and DataOps best practices to automate our processes</li> </ul> <p>We are a distributed asynchronous team, operating with a remote-first mindset. We have offices in Canada (Toronto, Montreal).</p> <p>And we have nothing to hide! So go check out our <a href="/blog/joel-test/">Joel test</a> results to know everything there is to know about our code writing skills.</p> <h3 id="who-are-you">Who are you?</h3> <p>You are an ETL developer or data engineer with significant experience in scripting languages, developing and maintaining data pipelines. You previously worked with large datasets and messy data with at least a few millions records.</p> <p>You believe coding is only part of your job, and you pay attention to code quality, documentation, unit testing, and data quality. You are comfortable speaking directly with the client to present your approach and collect feedbacks.</p> <p>You know when to ask for help, and are not afraid to learn new technologies.</p> <p>And like us, you believe data is the future.</p> <h3 id="the-mission">The mission</h3> <ul> <li>Work with the product owners and our customers to develop a technical vision for the project, including ETL specifications, workflows and data model definition.</li> <li>Design and build ETL flows, using Python, Bash or SQL</li> <li>Work with the DevOps team to deploy your creations to production</li> <li>Document operation procedure to execute, monitor and maintain data pipelines</li> <li>Monitor and test integrations for multiple customers.</li> <li>Support on-going projects</li> <li>Carry out research & development about new data acquisition and transformation technology</li> </ul> <p>Remember: You must be comfortable working directly with the customer in a consulting model.</p> <h3 id="skills-and-requirements">Skills and Requirements</h3> <h4 id="skills">Skills</h4> <ul> <li>JavaScript and Python and their common ETL libraries (pandas, numpy, click)</li> <li>Git</li> <li>Bash, Batch</li> <li>Comfortable with the command-line</li> <li>Knowledge of the different data formats (CSV, JSON, YML, XML)</li> <li>Excellent understanding of the SQL language</li> <li>Understanding of API design and usage</li> <li>Good knowledge of web development (though we will not ask you to develop web apps)</li> <li>Familiar with development concepts and best practices (Kanban, DRY, Design patterns)</li> <li>Good written and spoken English</li> <li>Willing to learn new tools and technology.</li> </ul> <h4 id="bonus-points">Bonus points</h4> <ul> <li>You have experience working with an all-remote or distributed team.</li> <li>You know other languages such as Java, Node, or PHP.</li> <li>You’re excited by ETL frameworks like Talend, Pentaho, or Alteryx.</li> <li>You have previous experience with web scraping.</li> <li>You know Linux or AWS</li> <li>You have experience with other database engines</li> <li>You have experience with Elastic Search, Kibana</li> </ul> <h3 id="what-we-offer">What we offer</h3> <ul> <li>Direct access to our senior developers and founder. We all work together, and we want our people to thrive.</li> <li>An efficient and well-organized remote environment, with REAL processes and experience. (We were “in” before remote work was even “in.”)</li> <li>Flexible schedule.</li> <li>Work-life balance.</li> <li>Documented projects and specifications.</li> </ul> <p>If you haven’t looked at our <a href="/blog/joel-test/">Joel test</a> results yet, do it now (and let us know)!</p> <h3 id="the-recruitment-process">The recruitment process</h3> <ol> <li>Submit your resume and cover letter to [email protected]</li> <li>We will schedule an introduction meeting with one of our founders.</li> <li>Positive meeting? Great! We’ll ask you to pass a technical test to review your skills. But because a test can limit how you express your talent, we will follow up with a technical interview. At this stage, you will also meet one of your future colleagues to have a different perspective on the company. Ultimately, we also want you to want us.</li> <li>Are you still interested in working with us? Awesome! If we feel we have a fit, we will get through the paperwork and get you started on a project.</li> </ol> <p>If you have any questions, please reach out to us at [email protected]. And we hope to see you soon!</p> <p>The RefinePro team.</p>florianWebinar Data Operations for CRM and Marketing2020-09-20T00:00:00-04:002020-09-20T00:00:00-04:00https://refinepro.com/blog/marketing-data-operation-webinar<p>In case you missed our webinar with Macro on September 10, 2020, you can find here the recording and the slides. </p> <div style="text-align: center; clear:both; min-height:250px"> <a href="https://us02web.zoom.us/webinar/register/6215985208832/WN_hgSFM8CFT4WY_XINgFhz4A"><img class="alignleft" src="/images/blog/macrowebinar.jpg" width="100%" /></a><br /> <a href="https://us02web.zoom.us/webinar/register/6215985208832/WN_hgSFM8CFT4WY_XINgFhz4A" class="button special mb-2">Watch the webinar recording</a> </div> <p>Data management is a core concern facing many companies today. Good data can have a tremendous positive impact on organizational efficiency, productivity, and revenue. Messy data, on the other hand, can have the opposite effect. It can lead to financial losses and disorganization.</p> <p><strong>What Is the Business Impact of Data Operations?</strong></p> <ul> <li>Better Data-Driven Decisions</li> <li>Improved Lead Management & Qualification</li> <li>Less Frustration</li> </ul> <p>In this webinar, Dan and Martin discuss the business impact of good data and will touch upon how companies can better manage their data and enhance their data operations strategy.</p> <p>Martin will also be presenting a demo of <a href="https://openrefine.org">OpenRefine</a>, a free open-source data clean up tool.</p> <div style="text-align: center"> <a href="https://us02web.zoom.us/webinar/register/6215985208832/WN_hgSFM8CFT4WY_XINgFhz4A" class="button special mb-2">Watch the webinar recording</a> </div> <div style="text-align: center;"><iframe allowfullscreen="" frameborder="0" height="485" marginheight="0" marginwidth="0" scrolling="no" src="//www.slideshare.net/slideshow/embed_code/key/InuGD7LevVavNy" style="border-width: 1px; border: 1px solid #CCC; margin-bottom: 5px; max-width: 100%;" width="595"> </iframe></div> <div style="margin-bottom: 5px;"> </div> <p><br /></p> <p>Dan is the president and founder of <a href="https://macromator.com/">Macro</a>. His professional background includes B2B demand generation consulting for Microsoft Dynamics CRM and various international marketing roles in Europe and North America.</p> <p>Martin is the founder and CEO of RefinePro, a Canadian company focused on data processing and normalization. He created RefinePro to make data within reach of small and medium-sized businesses or departme</p>martinIn case you missed our webinar with Macro on September 10, 2020, you can find here the recording and the slides.Download The Data Innovation Canvas2020-07-09T00:00:00-04:002020-07-09T00:00:00-04:00https://refinepro.com/blog/download-data-innovation-canvas<p>Learn more about the Data Innovation Canvas from Communitech. </p> <p> Watch Chris Willsher, Director of Data Platforms at Communitech, presents the canvas during the May 8th Communitech® Data Hub Sessions. The video starts at 41:25</p> <div style="text-align: center"> <iframe width="560" height="315" src="https://www.youtube.com/embed/3welnQnWDSw?start=2485" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe> <br /><br /> <a href="/images/blog/Data-Innovation-Canvas.pdf" class="button special mb-2">Download the data innovation canvas</a></div> <p> <div style="text-align: center; clear:both; min-height:250px"> <a href="/images/blog/Data-Innovation-Canvas.pdf"><img class="alignleft" src="/images/blog/data_innovation_canevas.png" width="100%" /></a><br /> </div></p>martinLearn more about the Data Innovation Canvas from Communitech. Watch Chris Willsher, Director of Data Platforms at Communitech, presents the canvas during the May 8th Communitech® Data Hub Sessions. The video starts at 41:25The secret for long term-growth - or why data is the new oil2020-07-09T00:00:00-04:002020-07-09T00:00:00-04:00https://refinepro.com/blog/why-data-is-new-oil<div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/744407434.jpg" width="100%" /></div> <div><br /></div> <p>Data is the new oil. It stands at the center of an organization’s value proposition, at the core of their product or service creation process. Understanding and managing data is a core competency and not a by-product.</p> <blockquote> <p>COMPANIES THAT ARE LEADERS IN THE USE OF DATA ARE THREE TIMES MORE LIKELY TO BE FINANCIALLY SUCCESSFUL. source: <a href="http://www.eiu.com/default.aspx">Economic Intelligence Unit</a></p> </blockquote> <p>It’s <a href="https://www.emc.com/leadership/digital-universe/2012iview/big-data-2020.htm">estimated</a> that 40,000 more exabytes of data is either created, replicated, or consumed annually in 2020 compared to 1,200 in 2010. And this increase is happening in almost every industry. Organizations must then learn to exploit and refine data if they want to grow. And to do so, they need to understand how their data strategy evolves at every step of their customer journey and product life cycle. They need their employees to understand how to use, read, understand, and interpret data. And they need to know how to build products and services that are driven by data.</p> <p>With data, your organization can create products or services that directly help customers. Your offer can take the form of tools (API, data feeds, recommendation engine, etc.) or knowledge and insights (thanks to advanced analytics). But ultimately, data still needs to be at the center of your organization’s business strategy. And the same way the Business Model Canvas is supposed to help organizations develop their business model, Communitech created the <a href="https://startupheretoronto.com/partners/communitech/communitech-communitech-data-hub-sessions-introducing-the-data-innovation-canvas-2/">Data Innovation Canvas</a> to help organizations develop a data model.</p> <div style="text-align: center; clear:both;"> <a href="/blog/download-data-innovation-canvas/" class="button special mb-2">Download the Data Innovation Canvas</a> </div> <div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/data_innovation_canevas.png" width="100%" /></div> <p>So you can now start fuelling your organization with data for better growth.</p> <h3 id="invest-in-your-future">INVEST IN YOUR FUTURE</h3> <p>We all start from an empty (or nearly empty) data store. Building a data strategy is the key to slowly assemble all the data you need, in a structured, efficient, ethical, legal, and reliable way. As you fill up your data warehouse, you can slowly define how your product or your service will incorporate data, and how you can leverage data over time to continually improve your offer.</p> <p><strong>It’s a compound interest.</strong> The longer you invest in your data, i.e. collect, aggregate, enrich, and analyze them, the more value you gain. Over time, you build historical information on specific elements of your service, product, and customer base, that will improve your analysis and allow you to gain new insights. Later down the road, your historical information will help you create better data initiatives. Essentially, you’re being paid off by your own work. You’re making interests over your interests.</p> <p><strong>Start now</strong>. Because this history is built over your doing, your innovations, and your products and services, it’s entirely exclusive to you and impossible to reproduce. Yes, it’ll take time. You might not be able to use data to address current challenges. The goal is more in the long term: How can you leverage data that improve <em>over time</em>? The only way to do so is by thinking two or three steps ahead to set the right goals.</p> <p>Keep in mind that the more data you collect, the more accurate you’ll be. But the more accurate you’ll be, the more changes you’ll need to make to your products, services, and workflows to incorporate data in your operations.</p> <p>Data is the new oil, but it’s not sufficient to fill the tank of your machine once and leave for a year. During your data journey, you’ll rethink how to use that fuel efficiently. You will also see new opportunities and new destinations to reach with a bus filled with happy and empowered customers.</p> <h3 id="find-the-perfect-productservice-market-fit">FIND THE PERFECT PRODUCT/SERVICE MARKET FIT</h3> <p><img class="alignleft" src="/images/blog/351983435.jpg" width="45%" />Once you’ve filled your Data Innovation Canvas, you’ll be ready to build a data-driven business model. In other words, your business model will define what role data will play in the growth of your organization and how it will adapt to data changes.</p> <p>Adaptability is the keyword here. Our world is moving fast, and that’s already an understatement. An organization that accepts to harness the power of data must also be ready to adapt to its many changes and variations. You should also take into consideration your organization’s learning curve when working with data. Mainly:</p> <ul> <li> <p>Your business plan should <strong>consider all possible ways of presenting data</strong> and their potential impact on your revenue model and targeted segments. One dataset, for example, could be used simultaneously to feed different initiatives.</p> </li> <li> <p><strong>Data changes all the time</strong>. It’s constantly being updated, transformed, erased, combined, added, etc. You need to consider the possible change in your data sources overtime, and how it’ll affect your organization and its capacity to deliver its products and services. If you use external data, you need to make sure your architecture is strong and flexible enough to handle unpredictable changes.</p> </li> <li> <p><strong>Data is not confined to one department</strong>. It can, and should, be used by different teams for different applications. The more you use your data, the most reliable it becomes, and the more you find ways to use it!</p> </li> <li> <p><strong>Data shouldn’t be complex</strong>. You don’t need to create the next artificial intelligence unicorn. Start with a narrow scope and explore the real use case for it. If you make it easy to explain, you’ll help increase the transparency of your activities for your users and stakeholders, and thus gain their trust. And this will show to be a lot more efficient than diving headfirst into complex cross-analysis, especially if it’s not needed.</p> </li> <li> <p><strong>Your customers change all the time too</strong>. And their expectations of your organization change also. Keep an eye out where the industry is going.</p> </li> </ul> <p>With a business model based on data, and most importantly based on the volatile nature of data, you multiply your chances of finding the perfect product/service market fit. Instead of relying on time-sensitive market analysis, your growth will be rooted in a deep understanding of your data and different user experience iteration. You’ll drive that bus full of customers not only with the right fuel but, most importantly, in the right direction.</p> <div style="text-align: center; clear:both;"> <a href="/blog/download-data-innovation-canvas/" class="button special mb-2">Download the Data Innovation Canvas</a> </div> <h3 id="take-away">TAKE AWAY</h3> <p>Now you know: collecting data and learning how to use it is your next big move. But it’s never that easy, isn’t it? There is such a thing as bad data. Before you throw yourself in juicy datasets, make sure you ask yourself the <a href="/blog/10-questions-to-ask-before-using-new-data/">10 essential questions</a> to make sure you’re feeding your organization with relevant data from reliable sources. It’ll also help you make sure the data you’re collecting is usable for your organization, or that you have the required abilities to clean it. And once you’ve clearly defined your source, don’t forget to plan ahead: how will you use these different sources? Can you cross analyze to derive new insights?</p> <p>Collecting, cleaning, and analyzing data <a href="/blog/schedule-maintain-web-scraper/">are not easy</a> (or cheap) tasks. You need to set the right expectations, or you risk drowning is tasks you hadn’t planned for, driving a bus that’s missing critical pieces of mechanics. It might be easier to start off with data that’s naturally closer to your needs as to limit the cleansing and preparation needed. And then, slowly, as your organization grows, you can improve your data granularity (the level of detail) or linkage (how it relates to other information).</p> <p>The secret is investing in your infrastructure. Build data foundations from the start, from engineering, based on a solid Data Canvas. Build foundations that will last while you iterate on the front end and insight delivery. Give yourself enough space to package data differently, according to your users.</p> <p>You’ll find all sorts of “ready to buy” datasets out there. But the datasets that matter are the ones you build. So, <strong>start collecting data early to build historical information. Because one thing you’ll never be able to buy back is time.</strong></p> <div> <section class="special"> <p> <section id="contact-cta" class="rp-cta wrapper style1"> <div class="inner"> <div class="rp-cta--text">Got a project or idea in mind? <br />We have the experts to make it happen. </div> <a href="/contact/" class="rp-cta--button button special">Tell Us About It</a> </div> </section> </p> </section> </div>martinDownload PDF Form 10 Questions Before Using New Data2020-06-15T00:00:00-04:002020-06-15T00:00:00-04:00https://refinepro.com/blog/Download-Questions-For-New-Data<div style="text-align: center;"> <img class="alignnone wp-image-1426 size-medium" src="/images/blog/10QuestionsBeforeUsingData.png" alt="PDF preview" width="225" height="300" srcset="/images/blog/10QuestionsBeforeUsingData.png 225w, /images/blog/10QuestionsBeforeUsingData.png 720w" sizes="(max-width: 225px) 100vw, 225px" /> </div> <iframe width="540" height="1150" src="https://03dbbe7d.sibforms.com/serve/MUIEAObSzwSc1Sy_AiTDGdXIh0HGVF24Xtb2yCD3AumINppThNf8w0e1LI9C1Vp1TgZ5PiKgvO_3OcuS5DKz_n_TK_Dy_vQ6VF4hBqtlG5yP0EZmgYhCv66PsAtseNlluubAxsa0geZjeHKFavcrsicgs-HAGivGAy3w8rSDrc-obtRB8SWpjJd-H-gdEy3fKfL8CtI7YuWfH4Pq" frameborder="0" scrolling="auto" allowfullscreen="" style="display: block;margin-left: auto;margin-right: auto;max-width: 100%;"></iframe>martinDownload PDF Form Web Scraping Software Comparison Table2020-06-15T00:00:00-04:002020-06-15T00:00:00-04:00https://refinepro.com/blog/Download-Web-Scraper-Comparison<div style="text-align: center;"> <img class="alignnone wp-image-1426 size-medium" src="/images/blog/WebScrapingComparison.png" alt="PDF preview" height="300" srcset="/images/blog/WebScrapingComparison.png 225w, /images/blog/WebScrapingComparison.png 720w" sizes="(max-width: 225px) 100vw, 225px" /> </div> <iframe width="540" height="1150" src="https://03dbbe7d.sibforms.com/serve/MUIEADKE_F-eqNc4hzlGqCD77FQCKuCTAMkxRPwwZT_802mvaL1rS57ktZRgZEW-n3lPE7i_u-Yo1QvG_H5WYVIyJKXxTvMC6XLunB5i376_MvOIB84DWVFBvTLcI9-6ALXljnadzfIrv-3_C5zdDRgO9pTOQbKxuGO_hX_kVIbpeKVR7DUiUR02XEv3fxZC_wp_TfEMRYlGiZ9n" frameborder="0" scrolling="auto" allowfullscreen="" style="display: block;margin-left: auto;margin-right: auto;max-width: 100%;"></iframe>martin10 questions to ask before using new data2020-05-25T00:00:00-04:002020-05-25T00:00:00-04:00https://refinepro.com/blog/10-questions-to-ask-before-using-new-data.md<div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/1496369480.jpg" width="100%" /></div> <p>Data extraction projects are complex and often require quite a lot of time and effort. To make sure your organization is creating value and that your money and your time are well spent, the first logical step is to choose your sources carefully. To help you achieve just that, we create <strong>a list of 10 questions you need to ask before you set your sights on a dataset</strong>. The goal here is to collect and analyze all the data existing information in order to clarify its ownership, publication, structure, content, quality, relationship, etc. Only by going through this process can you guarantee the suitability of your sources and identify potential problems and particularities.</p> <p>This checklist will help you assess all the elements you need to know in order to proceed with your data project. Most of all, once you have all the answers, you will have everything you need to define what will be your game plan to transform and manipulate the datasets you chose.</p> <p>So, without further ado, here are <strong>ten questions to ask before using new data.</strong></p> <ul> <li>Question 1: Who owns the data?</li> <li>Question 2: Who publishes the data?</li> <li>Question 3: Is the dataset documented?</li> <li>Question 4: How is the data collected?</li> <li>Question 5: How is the data maintained and updated?</li> <li>Question 6: What are the format and granularity?</li> <li>Question 7: Does the data follow standards?</li> <li>Question 8: Can you link your data to another dataset?</li> <li>Question 9: Under what licenses the data is released?</li> <li>Question 10: Are there data privacy issues?</li> </ul> <div style="text-align:center;"> <a href="/blog/download-10-questions-for-new-data/" class="button special">Download our editable form for your personal use</a></div> <p><br /></p> <h3 id="question-1-who-owns-the-data">Question 1. Who owns the data?</h3> <p>And by “own,” we don’t necessarily mean “publish” (see question 2). You need to know where the data originally comes from, and whom to contact if you ever have any questions or issues that need solving. Also, if you ever need to attribute ownership (see question 9) when reusing the data, this owner will be the one you will refer too. Basically, you need to put a human face and a name to the data you wish to extract and use.</p> <h3 id="question-2-who-publishes-the-data">Question 2. Who publishes the data?</h3> <p>There are a lot of platforms out there that offer huge datasets, like <a href="https://www.quandl.com/">Quandl</a>, and <a href="https://data.world/">data.world</a>. But it doesn’t mean they own the data they share with you. It is, therefore, imperative that you know who owns and publishes and shares the data. This distinction will help you better answer the following questions.</p> <h3 id="question-3-is-the-dataset-documented">Question 3. Is the dataset documented?</h3> <p>You need to gather all the information on how the data was collected (see questions 4 and 5) and how it should be interpreted (see question 7). This includes the schema of the data, with the data type and validation rules. The goal here is to make sure you can answer most questions without having to go back to the data owner.</p> <h3 id="question-4-how-is-the-data-collected">Question 4. How is the data collected?</h3> <p>The answer to this question will help you identify any potential biases in the way data is collected. It will also give you some extremely important information concerning the data itself: is the data complete or partial? Has it been pre-processed before its publication? You want to know what the original state of the data was and how much it has changed (or not) before reaching you.</p> <h3 id="question-5-how-is-the-data-maintained-and-updated">Question 5. How is the data maintained and updated?</h3> <p>Now that you know what the data looked like originally, you want to know what processes it goes through. For example, you want to ensure your data will still be reliable in the long-term. You also want to know how often it’s updated and if the set contains all the records or only updated ones. You also need to know if there’s a change in the collect methodology, or if the dataset stops being available.</p> <p>Without these answers, you might end up building a script for something that won’t be available in two days’ time, or not in the format you expected.</p> <h3 id="question-6-what-are-the-format-and-granularity">Question 6. What are the format and granularity?</h3> <p>You must identify the formats in which your data is made available. Formats can usually be categorized as follows:</p> <ul> <li>NonFriendly Format (PDF, web page, Word document, image)</li> <li>Flat file (CSV, XLS)</li> <li>Structured file (JSON, XML)</li> <li>API and web service, provided by the source or by a third party (Quandl, data.world)</li> <li>Maps (KML, Shapefile, GeoJSON)</li> </ul> <p>Once you know what format you’ll need to deal with, you can better choose the tools and solutions you’ll need to extract and transform your data. It will also help you identify the <strong>data granularity, or the lowest data point available</strong>. If, for example, your information concerns time, you want to know if the smallest possible data point is second, minute, hour, day, month, or year. The same goes for maps: address, postal code, city, or state?</p> <p>Knowing what your data looks like and what shape it takes will guarantee that you have all the information you need to extract it using the right tools and solutions.</p> <h3 id="question-7-were-specific-standards-applied-to-the-dataset">Question 7. Were specific standards applied to the dataset?</h3> <p>When data is collected and published according to certain standards, it helps remove ambiguity on the collection, aggregation, and preparation methods. Standardization also allows us to compare and combine data according to jurisdiction or period. Data regarding elections, <a href="http://open311.org/">311 calls</a>, census or <a href="https://developers.google.com/transit/gtfs">transit</a> information, for example, are all standardized.</p> <h3 id="question-8-can-you-link-the-data-to-another-dataset">Question 8. Can you link the data to another dataset?</h3> <p>When profiling your data, you need to make sure you understand all its relationships with other datasets. Is it isolated, or could it be combined with other internal or external data? What new insight can you build from it? How could you merge them? Do they share a common key? Basically, the goal here is to profile your data as it related to other data.</p> <h3 id="question-9-was-the-data-published-under-a-license-and-if-so-which-one">Question 9. Was the data published under a license? And if so, which one?</h3> <p>Some organizations will choose to publish their data under a license, which then defines how the data should be collected, shared, and used. You need to be aware of these licenses and understand how they work. The most common are:</p> <h4 id="odc-public-domain-dedication-and-licence-pddl">ODC Public Domain Dedication and Licence (PDDL)</h4> <div style="clear:both;"> <img class="alignleft" src="/images/blog/share.svg" width="7%" /><img class="alignleft" src="/images/blog/remix.svg" width="7%" /><img class="alignleft" src="/images/blog/pd.svg" width="7%" /></div> <p>With <a href="https://www.opendatacommons.org/licenses/pddl/1-0/index.html">PPDL</a>, users can share, create, and adapt the document. There’s no restriction and the dataset is public domain.</p> <h4 id="open-data-commons-attribution-license-odc-by">Open Data Commons Attribution License (ODC-By)</h4> <div style="clear:both;"> <img class="alignleft" src="/images/blog/share.svg" width="7%" /><img class="alignleft" src="/images/blog/remix.svg" width="7%" /><img class="alignleft" src="/images/blog/by.svg" width="7%" /></div> <p>With <a href="https://opendatacommons.org/licenses/by/index.html">ODC-By</a>, users can share, create, and adapt the document. The only restriction is the attribution, which means that users need to cite the source.</p> <h4 id="open-data-commons-open-database-license-odc-odbl">Open Data Commons Open Database License (ODC-ODbL)</h4> <div style="clear:both;"> <img class="alignleft" src="/images/blog/share.svg" width="7%" /><img class="alignleft" src="/images/blog/remix.svg" width="7%" /><img class="alignleft" src="/images/blog/by.svg" width="7%" /><img class="alignleft" src="/images/blog/sa.svg" width="7%" /></div> <p>With <a href="https://opendatacommons.org/licenses/odbl/index.html">ODC-ODbL</a>, users can share, create, and adapt the document, but they need to cite the sources, share with the same license.</p> <h4 id="custom-licenses">Custom licenses</h4> <div style="clear:both;"> <img class="alignleft" src="/images/blog/custom-license.png" width="7%" /></div> <p>Unfortunately, custom licenses are extremely popular. They necessitate that you read it, understand it, and make sure you respect its specific requirements. This could impact how you can collect and transform your data, as well as how you can use it.</p> <h3 id="question-10-are-there-data-privacy-issues">Question 10. Are there data privacy issues?</h3> <p>Privacy is protected differently from state to state. Important differences even exist between Canada, the United States and Europe. You need to know if your datasets contain Personally Identifiable Information (PII) or if it would be possible to <a href="https://georgetownlawtechreview.org/re-identification-of-anonymized-data/GLTR-04-2017/">re-identify individuals based on anonymized data</a>. This is especially true with <a href="https://www.ncbi.nlm.nih.gov/books/NBK208613/">healthcare data</a>.</p> <div style="text-align:center;"> <a href="/blog/download-10-questions-for-new-data/" class="button special">Download our form to make your own analysis</a></div> <p><br /></p> <h3 id="and-with-that">AND WITH THAT</h3> <p>Knowing what data you need is not enough to start a data extraction project. More than “what,” you need to know “who” your data is. Knowing your data is the only way to know for sure you’re using the right tool, at the right schedule, with the right script, to get the right data and transform it correctly.</p> <p>This list of ten questions should be your first step in defining if a dataset is worth all the efforts you’re ready to put into it. Data projects are complex projects on their own and they require that you plan them well.</p> <p>Choose your sources is only the first step to a long story. Depending on your sources and needs (are you dealing with unfriendly <a href="/expertise/pdf-extraction/">formats like PDFs?</a>, you’ll need to define the best tools for <a href="/expertise/web-scraping/">web scraping</a>, the best way to <a href="/blog/how-to-maintain-data-quality/">maintain data quality</a> throughout the whole process, the best way to <a href="/blog/14-rules-for-successful-ETL/">build a solid ETL process</a>, and the <a href="/expertise/design-architecture/">best architecture for data extraction processes.</a></p> <div> <section class="special"> <p> <section id="contact-cta" class="rp-cta wrapper style1"> <div class="inner"> <div class="rp-cta--text">Got a project or idea in mind? <br />We have the experts to make it happen. </div> <a href="/contact/" class="rp-cta--button button special">Tell Us About It</a> </div> </section> </p> </section> </div>martinData extraction projects are complex and often require quite a lot of time and effort. To make sure your organization is creating value and that your money and your time are well spent, the first logical step is to choose your sources carefully. To help you achieve just that, we create a list of 10 questions you need to ask before you set your sights on a dataset. The goal here is to collect and analyze all the data existing information in order to clarify its ownership, publication, structure, content, quality, relationship, etc. Only by going through this process can you guarantee the suitability of your sources and identify potential problems and particularities.PDF extraction - Everything you need to know2020-05-18T00:00:00-04:002020-05-18T00:00:00-04:00https://refinepro.com/blog/PDF-extraction-Everything-you-need-to-know<div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/1505621234.jpg" width="100%" /></div> <p>Our team here at RefinePro has a deep experience doing research and development in data processing and automation. And PDF extraction is one of the many services we offer.</p> <p>But before we go into too much detail … <strong>why exactly do people need PDF extraction for?</strong></p> <p>Portable Document Format, or PDF, is a standardized file format. It allows users to distribute read-only documents that will present the same text and images independently of the hardware, software, or operating system used to open it (Mac, Windows, Linux, iPhone, Android, and others). PDF documents may contain a wide variety of information other than text and graphics, such as interactive elements (annotations and editable fields), structural elements, media, and various other content formats.</p> <p>In today’s work environment, PDF is often the go-to solution for exchanging business data. Suppliers, for example, mostly prefer PDF to create their price lists and catalogues and to exchange invoices, purchase orders, reports, etc. So, whether you’re trying to gather a larger volume of <strong>data on a specific subject</strong> in your field of research or just trying to extract a list of items and prices for your <strong>eCommerce website</strong>, you need to find a way to convert information contained in PDF documents into usable structured data.</p> <p>And let’s be honest, nobody wants to (or can!) go through doze or even hundreds of documents manually.</p> <p>PDF documents are easy to read for humans, but they rarely contain any machine-readable data. Their format varies considerably from one file to another, depending on how it was generated. If you’re lucky, the document you’re extracting your data from is in text format, with numbers organized neatly in tables. But if you’re not lucky, the information is embedded in an image. In that case, you’ll need to use Optical Character Recognition (OCR) to help you get the data.</p> <p>Accessing a massive amount of information stored in PDFs and converting it can then be a burdensome task. Luckily, PDF data extraction offers solutions to automate this task and automatically convert messy information into structured and usable data. And PDF extraction projects are no news for us. We invested in some of the proven technologies, and we are always testing out new software to make sure we help you build the data extraction project you need to meet your goals.</p> <h3 id="1-pdf-extraction-how">1. PDF EXTRACTION: HOW?</h3> <h4 id="11-the-right-tool-for-your-project">1.1 THE RIGHT TOOL FOR YOUR PROJECT</h4> <p>There are a lot of different systems out there to help you set a solid PDF extraction project. For business analysts, it’s often easier to go with “What You See Is What You Get” interfaces (<strong>WYSIWYG</strong>) like <a href="https://docparser.com/?ref=roqts">DocParser</a>. These systems tend to be more expensive, but they are easy to use and set, and they work well with high volume of easy cases. For entry-level programmers, some solutions offer more flexibility and low code complexity, which makes it easier to support exceptions for complex files. However, they still require programming knowledge and expertise on data extraction project as a whole. They usually run on <strong>JAVA</strong> or <strong>Python</strong>.</p> <p>The advantage of working with a partner like RefinePro is that thanks to our years of experience, we can help you <strong>select the technology that will best answer your requirements.</strong> We listed the four categories you should keep in mind.</p> <h4 id="12-assessing-your-needs">1.2 ASSESSING YOUR NEEDS</h4> <p><strong>Your business and legal requirements:</strong> You should ask yourself:</p> <ul> <li>Are you working with sensitive data? What privacy laws do you need to comply with?</li> <li>Do you want to use non-open source technology?</li> <li>What level of dependency do you want or can have on a service or technology provider?</li> </ul> <p><strong>The connectivity to your systems:</strong> This includes the method used to send and receive the PDFs with your systems (e.g. via an API, a database connection, or other) and if you want to process files in batch or on-demand as they are collected?</p> <p><strong>The volume of data:</strong> including how many are your processing per day? How many different layouts? What are the data validation rules (schema, business rules, etc.); and what happens when the validation job rejects data (the review process).</p> <p><strong>Your Resources:</strong> Who will monitor your PDF extraction project? What type of skills (and training) do they need? What kind of medium- and long-term support do you need?</p> <h3 id="2-refinepros-pdf-extraction-subsystems">2. REFINEPRO’S PDF EXTRACTION SUBSYSTEMS</h3> <p>Over the years, we have developed an extraction architecture that relies on a set of best practices and proven engineered patterns. We recommend <a href="/blog/divide-and-conquer-your-data-project/">decoupling your steps</a> to make troubleshooting easier. PDF extraction should follow four steps: data collection, data normalization, data validation, and delivery.</p> <p>These steps are part of an architecture in which ingestion and normalization of each PDF document are divided into three subsystems.</p> <div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/pdfprocess.png" width="100%" /></div> <h4 id="21-subsystem-one-collection-and-normalization">2.1 Subsystem One. Collection and Normalization.</h4> <p>In the first part, we bring together collection and normalization. All the different formats of data collected are being morphed into a standard schema, which is the set of validation rules you implemented to define what a “good” data is. To do so, the developer writes one PDF extraction and one normalization script per PDF layout. In other words, different scripts are used depending on the outlines, style, and logical component content of the PDF. This way, one script will extract data from documents matching the same layout—the same logical structure—to then transform it in a usable format for your team.</p> <p>In this script, the developer will add all the exceptions related to a specific PDF layout so that each file format can be processed independently. This way, if one script returns an error, it only affects one layout and not the entire project, making troubleshooting easier.</p> <p>For the normalization step, more specifically, <a href="/toolbox/openrefine/">OpenRefine</a> is a great tool if you want to build a fully WYSIWYG solution (something we can help you with). On the other hand, <a href="/toolbox/talend/">Talend Open Studio</a>, is perfect if you want to outsource the work to entry-level programmers. We can also <a href="/offering/training/">train your team</a> and help you launch your first project!</p> <h4 id="22-subsystem-two-validation-and-delivery-or-the-delivery-of-quality-data">2.2 Subsystem Two. Validation and delivery (or the delivery of quality data)</h4> <p>During the second part, which includes validation and delivery, we leverage a unified schema. We only need one validation and one delivery script for all PDF layout. The data is being validated using the schema to ensure compliance with your business rules before it is delivered into your system.</p> <p>During validation, we define and document the schema, namely the elements that make a “good” data. As such, a validation error occurs when an extracted data doesn’t pass the validation rules established for the project. This corruption can come from a bug in the workflow, or changes in the data sources.</p> <p>This step is particularly important. When we develop a PDF extraction project script, one of the priorities is to create a validation script to ensure we do not over-engineered data quality. We need to ensure that the validation steps fail as early as possible to avoid corrupting downstream systems.</p> <h4 id="23-subsystem-three-scheduling-monitoring-and-maintaining">2.3 Subsystem Three. Scheduling, Monitoring, and Maintaining</h4> <p>The third part is the use of infrastructure or platform to execute, schedule, configure, and monitor the scripts themselves to ensure they keep delivering reliable data. Most importantly, also, data quality (article 3) will need to be monitored thoroughly.</p> <h3 id="what-about-ai">WHAT ABOUT AI?</h3> <p>Artificial Intelligence is the new kid on the block. Everyone knows it, everybody wants to use it, many people claim to have mastered it, but few people actually offer it. In PDF extraction, more specifically, we have seen a lot of promising development, but we’re not there yet. AI can be used for very narrow use cases. Instead of trying to find the next shiny object, we recommend sticking to well-proven and tested solutions that will help you get the results you’re looking for. Be sure, however, that our team is keeping a close eye on all the new technologies out there. Don’t hesitate to contact us [email protected] if you’d like an independent assessment on a specific software.</p> <h3 id="and-with-that">AND WITH THAT</h3> <p>Here at RefinePro, we provide data strategy, system architecture, implementation, and outsourcing services to help organizations scale and automate data acquisition and transformation workflows. Whether you decide to work with us, with another service provider, or even on your own, you’ll need to make sure to select the right tools (and not just the PDF extracting tool: database, servers, data processing framework, etc.) and set up your processes to meet your data quality requirements while minimizing the maintenance efforts.</p> <p>For years, we have helped clients define what system and process to put in place to ensure their needs are answered in the most time- and cost-efficient manner. So, before you throw yourself on Google or your in-house expertise to develop a complex data extraction project, contact us!</p> <div> <section class="special"> <p> <section id="contact-cta" class="rp-cta wrapper style1"> <div class="inner"> <div class="rp-cta--text">Got a project or idea in mind? <br />We have the experts to make it happen. </div> <a href="/contact/" class="rp-cta--button button special">Tell Us About It</a> </div> </section> </p> </section> </div>martinOur team here at RefinePro has a deep experience doing research and development in data processing and automation. And PDF extraction is one of the many services we offer.How to divide and conquer your data project for success2020-05-17T00:00:00-04:002020-05-17T00:00:00-04:00https://refinepro.com/blog/divide-and-conquer-your-data-project<div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/1257325042.jpg" width="100%" /></div> <p>Data extraction is now one of the most efficient ways for companies to stay up to date with current events and trends, but also to position themselves in their field. But for a lot of small entrepreneurs and even larger companies, the implementation of data extraction projects presents new challenges: How should these processes be implemented, and by whom?</p> <p>Web Scraping is known as the process by which data is extracted from different sources and then transformed into usable information. As such, a huge part of any web scraping project relies on a strong Extraction, Transformation, and Loading process, known as ETL. But building a solid ETL architecture for your web scraping requires a lot of technical know-how, combined with the knowledge necessary to adapt these “easy-to-use” tools to your specific needs. Most importantly, your project will also rely on many other crucial processes, including data quality management and administrative procedures.</p> <p>In this article, we explain <strong>why all your different data extraction processes should be decoupled for a more seamless workflow.</strong> That might sound counterintuitive… But the idea is as old as the world: divide and conquer (even algorithms understand). Divide your script, divide your task, find solution to sub-problems instead of a major crash, and get reliable end results, without draining your economic and human resources.</p> <h3 id="1-what-is-etl">1. WHAT IS ETL?</h3> <p>During ETL, data is being copied from pre-defined sources before reaching you in a format that makes it usable. An ETL developer can help you build an architecture that will support the ETL process of your project.</p> <p>Why an “ETL” developer? A developer creating a robust data transformation process work at the crossroad of different fields and execute functions as diversified as database analysis, system integration, and data transformation development. He or she must ensure that every aspect of the data life cycle has been addressed to ensure its operability and maintainability.</p> <h3 id="2-the-extraction-transformation-and-loading-behind-etl">2. THE EXTRACTION, TRANSFORMATION, AND LOADING BEHIND ETL</h3> <p>The three main steps of ETL will come as no surprise: extraction, transformation, and loading. But as one might suspect, each of these steps hides a lot of sub-steps that need to be considered. Data going through an ETL process will undergo different stages in its journey. We will now examine how these stages integrate within the three main steps of ETL. And keep in mind our <em>“divide to conquer”</em> motto: every step of your ETL as its own logic and should be considered separately.</p> <div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/dataflow.jpg" width="100%" /></div> <h3 id="21-discovery-and-curation">2.1 Discovery and curation</h3> <p>Before you sit down with your developer and start coding, you must define precisely what sources you want to extract your data from and how you’re going to document all the relevant information (including the owner, the availability, the updates, etc.). At the end,</p> <ul> <li>You know who published your data, when, and how;</li> <li>You know what your data looks like (its size, format, relations to other data), and;</li> <li>You have a map of your data, from the source to your database.</li> </ul> <p>Once discovery and curation are done, you can now jump on step two, data collection.</p> <h3 id="22-data-collection-extract">2.2 Data collection (Extract)</h3> <p>At this substep, your focus should be on getting to data out from its original format. You will need to select the right data extraction technology, whether it is to get data from <a href="/expertise/migration-integration/">another database</a>, XLS files, a <a href="/expertise/web-scraping/">website</a> or a <a href="/expertise/pdf-extraction/">PDF document</a>. Once it has been extracted, data can now be moved to a landing database in your dedicated data transformation environment. It’s from this new environment, entirely under your control, that you can start reviewing and troubleshooting the data.</p> <h3 id="23-normalization-and-validation-transform">2.3 Normalization and validation (Transform)</h3> <p>Now that you’ve extracted your data, you need to transform it. During the normalization and validation, the messy data you obtained is being prepared to match the format of your target system, whether it’s a data warehouse or your eCommerce website. Before you start developing a transformation process, though, make sure you know what the <a href="/blog/14-rules-for-successful-ETL">best practices</a> are and which ones you need to implement (and ignore).</p> <p>But remember! Divide to conquer: data extraction (step 1) should be decoupled from the transformation (step 2). Why?</p> <ul> <li>It makes debugging and restartability easier by segmenting more precisely the journey of your data (see our <a href="/blog/how-to-maintain-data-quality/">article on data quality</a>).</li> <li>It gives your (ETL) developer the possibility to select the best tool for each job. This way, your web scraper will do its job of scraping (which is already a <a href="/schedule-maintain-web-scraper/">complex job in itself</a>) and your data cleansing tool will do its job of cleaning.</li> </ul> <h3 id="24-enrichment-and-processing-transform">2.4 Enrichment and processing (Transform)</h3> <p>Enrichment and processing steps add value to your data by connecting it with other datasets, such as your own proprietary data (like your customer or product information), for example, or other collected datasets. At this stage, you add your business logic, your secret sauce, so that your team can read and make sense of the data. By adding your business logic to messy data, you give yourself the possibility to develop real business intelligence. And that’s when data extraction really becomes interesting.</p> <p>Again, decoupling is important here. You should have a single processing script for all your data sources. It is a good time to create historical values by comparing records, a process often referred to as the <a href="https://en.wikipedia.org/wiki/Slowly_changing_dimension">six slow changing dimensions</a> (mainly the ability to keep track of unpredictable changes). Building historical information from extracted data gives you an edge (if not an unfair advantage) in understanding your market and industry. You could, for example, track the price of an item over time to predict when it will be on sale or out of stock.</p> <h3 id="25-delivery-and-consumption-load">2.5 Delivery and consumption (Load)</h3> <p>Your data is now ready to be used. But in order to do so, you need to move it from your external database into a data warehouse available to your team. During this last substep, we read data from the staging or landing table and insert it into your system. We can push it into a warehouse, upload it directly into your operational system (like an eCommerce website), or make it available to your organization via a custom API.</p> <h3 id="26-administration-making-it-all-work-together">2.6 Administration, making it all work together</h3> <p>It’s the long-forgotten process, but still a crucial one. The administration will orchestrate the many processes we previously covered. A well-administered project will manage depencies between steps, and make sure everything happens in the right order. Your main tools, including your web scraper, will need to be well <a href="/blog/schedule-maintain-web-scraper/">scheduled, maintained, and monitored</a>. It will also be crucial that you implement practices such as <a href="/blog/14-rules-for-successful-ETL">logging, code management, configuration, and project management</a>.</p> <p>Data discovery and curation, data collection, normalization and validation, enrichment and processing, delivery and consumption, and administration: these are the multiple layers you find when your start scratching the varnish of a data extraction project. They all contribute to the overall stability, but their uniqueness is also what makes the whole structure stronger. With a well-built architecture, the whole system is not affected if one layer is posing a problem or needs to be upgraded for any technical or business reason.</p> <h3 id="3-and-with-that">3. AND WITH THAT</h3> <p>Obviously, a complex process such as this can’t be built in a day. It takes trial and error to select the best technology and processes, and also to confirm that you can build value from the data. Every data project has its own specificities. Your organization may have a short-term, extremely precise need for data extraction, but most companies want data that support their business strategy, one they can rely on in the long term to make important decisions. This is why we recommend following an <a href="/blog/agile-data-process/">agile data transformation process</a>. We suggest developing complex data products by starting small with a couple of sources before scaling it to a robust business-wide data factory.</p> <p>Over the years, we’ve built a strong experience in developing and managing these different processes. Our clients rely on us to manage every aspect, layer, and step of their data collection project so they can focus on building lasting insight and product. By doing so, they know they’re paying the right price for their data, and that they’re not overwhelming their development team.</p> <p>Depending on your team know-how level, your needs will also change. We can deliver custom training for your team before they throw themselves into web scraping, help you build your project from scratch, or even assist you after its implementation. We offer <a href="/offering/training/">training and mentoring</a> as well as <a href="/offering/team-augmentation/">team augmentation</a>, and <a href="/offering/team-platform/">data-first application development</a>.</p> <div> <section class="special"> <p> <section id="contact-cta" class="rp-cta wrapper style1"> <div class="inner"> <div class="rp-cta--text">Got a project or idea in mind? <br />We have the experts to make it happen. </div> <a href="/contact/" class="rp-cta--button button special">Tell Us About It</a> </div> </section> </p> </section> </div>martinData extraction is now one of the most efficient ways for companies to stay up to date with current events and trends, but also to position themselves in their field. But for a lot of small entrepreneurs and even larger companies, the implementation of data extraction projects presents new challenges: How should these processes be implemented, and by whom?14 rules to succeed with your ETL project2020-05-15T00:00:00-04:002020-05-15T00:00:00-04:00https://refinepro.com/blog/14-rules-to-succeed-with-your-ETL-project<div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/1238032837.jpg" width="100%" /></div> <p>Extracting, transforming, and loading (ETL) data is a complex process at the center of most organizations’ data extraction projects. As we saw in our article on <a href="/blog/divide-and-conquer-your-data-project">web scraping and ETL</a>, the implementation of an ETL workflow is a process that requires a lot of in-depth knowledge in several subfields of statistics and programming.</p> <p>ETL developers thus work at the crossroad of different fields. They must ensure that every aspect of the data life cycle has been addressed to ensure its operability and maintainability. To help your developer navigate the deep and dark waters of ETL, we’ve drawn on our years of experience to create a list of ETL principles and best practices.</p> <p>What you see here is not meant to be a grocery list; these guidelines need to be considered, and then implemented or rejected. Your developer will draw on their understanding of the project and their experience to decide which principles are needed, when, and at what range.</p> <h3 id="ten-best-practices-for-etl-workflow-implementation">TEN BEST PRACTICES FOR ETL WORKFLOW IMPLEMENTATION</h3> <div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/14rules/16.jpg" width="10%" /> <h4> 1. Modularity</h4> <p>Modularity is the process of writing reusable code structures to help you keep your job consistent in terms of size and functionalities. With modularity, your project structure is easier to understand, making troubleshooting easier too. The ultimate goal is to improve job readability and maintainability by avoiding the need to write the same code over and over again.</p> </div> <div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/14rules/14.jpg" width="10%" /> <h4> 2. Atomicity</h4> <p>Atomicity is used to break down complex jobs into independent and more understandable parts. The workflow is divided between distinct units of work and small and individual executable processes. Each of these parts can be executed separately. It makes testing and troubleshooting easier since the developer doesn’t need to run a long-running process to debug a single operation.</p> </div> <div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/14rules/19.jpg" width="10%" /> <h4> 3. Change Detection and Increment</h4> <p>A change detection strategy detects differences and allows incremental data loading. This means that only records changed since the last update is brought into the ETL process, avoiding unnecessary transformations.</p> </div> <div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/14rules/17.jpg" width="10%" /> <h4> 4. Scalability</h4> <p>Your ETL process should be implemented in a way that ensures its scalability to allow your project to adapt to the growing volume of data. This way, you don’t have to redefine a new project at every new stage of your growth, saving you time and money.</p> </div> <p>Another important aspect of any ETL workflow implementation is data quality and error management. We have an article explaining in detail <a href="/blog/how-to-maintain-data-quality/">how to guarantee the quality of the data</a> loaded in your databases, and how to deal with validation errors. So, we won’t go into too much detail in this article, but here’s a list of principles to consider during implementation:</p> <div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/14rules/12.jpg" width="10%" /> <h4> 5. Error Detection and Data Validation</h4> <p>During validation, the data being extracted is checked according to a predefined profile. This profile represents what a “good” data is for your project. The goal is to control data as early as possible to limit the computing time and avoid processing data that will be rejected later on. It also makes recovery easier as errors are detected early in the process.</p> </div> <div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/14rules/3.jpg" width="10%" /> <h4> 6. Recovery and Restartability</h4> <p>Recovery and restartability address the capability of the workflow to resume after an error. It includes the process by which the data stays in a stable state following an error. That requires the use of database backup, as well as commit and rollback features. When we commit, we make permanent a set of changes in the code. Rollback, on the other hand, is the capability to return a program back to an earlier version. They are both used to manage workflow and errors, in combination with another practice known as idempotence.</p> </div> <div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/14rules/20.jpg" width="10%" /> <h4> 7. Idempotence</h4> <p>An operation is defined as idempotent when it gives the same result after being called once or multiple times. In real life, the best example would be the elevator button: you have the same result whether you push it once or fifteen times. How can idempotence be relevant in data transformation, knowing how your data is always changing? Because sometimes, it doesn’t. If a data suddenly stops being updated, you still get the same results in your tables. The same would apply if your own transformation deployments were to stop. With idempotent transformations, you avoid a system failure when the ETL process itself fails. </p> </div> <div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/14rules/15.jpg" width="10%" /> <h4> 8. Data Lineage</h4> <p>Data lineage helps identify which ETL steps a specific data point went through and to understand where it originated from, when it was loaded, and how it was transformed. It eases debugging and increase trust in the data by making the process transparent, thus validating the integrity of the end results. Thanks to lineage, we can guarantee the integrity of the data and the process that extracted and loaded it into your database.</p> </div> <div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/14rules/5.jpg" width="10%" /> <h4> 9. Auditing</h4> <p>Checking your logs for potential mistakes is not enough to ensure that your load was a success. Your system should be designed to check for errors and to support auditing of your primary metrics (like the number of rows processed).</p> </div> <div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/14rules/19.jpg" width="10%" /> <h4> 10. Script Configuration</h4> <p>When executed, the configuration variable modifies a workflow behaviour. Variables are stored separately from the job so you can modify them without editing and deploying the scripts. Identifying the right variables is an integral part of any professional ETL job. For example, configuration variables contains parameters such as the server name and credentials, which should never be hardcoded in a job</p> </div> <h3 id="four-best-practices-for-etl-workflow-to-schedule-monitor-and-maintain">FOUR BEST PRACTICES FOR ETL WORKFLOW TO SCHEDULE, MONITOR, AND MAINTAIN</h3> <p>Every data project includes an administrative component. We already covered <a href="blog/schedule-maintain-web-scraper/">the scheduling, monitoring, and maintaining of web scraping</a>. However, these three important tasks also need to be executed at the ETL process level. Here’s a list of principles that will help your developer manage the workflows more efficiently. Most ETL software comes with a server edition that provides those four features. If you are looking for a technology agnostic (or cheaper) solution, <a href="/contact/">contact us</a> for more details.</p> <div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/14rules/11.jpg" width="10%" /> <h4> 11. Orchestration</h4> <p>Your developer will ensure that all the moving parts of your workflow come together to deal with the different nature, frequency, and cadence of your source data. It includes executing the different ETL modules and their dependencies, in the right order, along with logging, scheduling, alert monitoring, and managing code and data storage. This orchestration demands a high level of know-how, but also access to the right resources. You should never hesitate to ask for the services of an expert like us to help you implement your project.</p> </div> <div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/14rules/8.jpg" width="10%" /> <h4> 12. Metadata management</h4> <p>Metadata is basically data about your data. They hold all kinds of information describing our ETL workflow. It can include information on where the data comes from, how many data points it contains and the data extraction strategy. Most importantly, a well-designed metadata system will maintain various versions of execution, including the status, the extraction and transformation methods used, the changes in source systems, etc. Thanks to the metadata, your developer can keep track of all these changes over several months or even years and your team will have all it needs to analyze the system more efficiently. </p> </div> <div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/14rules/18.jpg" width="10%" /> <h4> 13. Logging</h4> <p>Every step of an ETL project must be logged using a central logging component. Relevant events are then recorded whether they happen before, during, or after extraction, transformation, or loading. </p> </div> <div style="clear:both; min-height:250px"> <img class="alignleft" src="/images/blog/14rules/1.jpg" width="10%" /> <h4> 14. Code Management and Storage</h4> <p>You should always keep track of your code and store it somewhere safe. There are three main reasons for this. First, you should always keep track of your code versions, so you can come back and restore your scripts after a bug or an error. Second, code management and storage will enable collaboration between members of your team and other external collaborators. And third, because your code needs to be kept separate from the execution environment. </p> </div> <h3 id="and-with-that">And with that</h3> <p>With those fourteen best practices, you have everything you need to make sure your ETL workflow fits your organization’s needs. Whether your plan is to grow, to discover new markets, to know more about your competitors, to develop a business plan, or to introduce a new product to the market, data should always be at the cornerstone of your analysis. Selecting the best ETL tool will only be the first step to ensure your end data is reliable and relevant to your goals. Implementing and maintaining these tools and the process that binds them is paramount to your project success.</p> <p>This article only scratches the surface of ETL design principles and best practices. Your developer will need to know which ones need to be applied, when they should be implemented, and at what range. Your developer needs to balance the robustness of the data pipeline and its development cost. But these principles and guidelines implemented at the right moment with the right goal in mind will guarantee the quality of your data, but will also help you manage an already complex process with more ease and fewer headaches.</p> <p>At RefinePro, we have been helping clients implement ETL projects for years, and doing so, have developed a deep understanding of its many internal mechanisms. And we rely on such best practices to guarantee that our ETL workflows answer all our client’s needs.</p> <div> <section class="special"> <p> <section id="contact-cta" class="rp-cta wrapper style1"> <div class="inner"> <div class="rp-cta--text">Got a project or idea in mind? <br />We have the experts to make it happen. </div> <a href="/contact/" class="rp-cta--button button special">Tell Us About It</a> </div> </section> </p> </section> </div>martinExtracting, transforming, and loading (ETL) data is a complex process at the center of most organizations’ data extraction projects. As we saw in our article on web scraping and ETL, the implementation of an ETL workflow is a process that requires a lot of in-depth knowledge in several subfields of statistics and programming.