Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

可维护的 ETL: 使管道更容易支持和扩展的技巧 #5930

Merged
merged 3 commits into from
Jun 18, 2019

Conversation

fireairforce
Copy link
Contributor

可维护的 ETL: 使管道更容易支持和扩展的技巧

译文翻译完成,resolve #5890

可维护的 ETL: 使管道更容易支持和扩展的技巧
@portandbridge
Copy link
Contributor

校对认领

@fanyijihua
Copy link
Collaborator

@portandbridge 好的呢 🍺

Copy link
Contributor

@portandbridge portandbridge left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

&& 表示意义和原文有出入
~~ 表示通顺程度和标点方面的修改

先出门,回家再接着改


![modularized code example](https://multithreaded.stitchfix.com/assets/posts/2019-05-21-maintainable-etls/maintainable-etls-code-animation.gif)

Core to any data science project is…wait for it…data! Preparing data in a reliable and reproducible way is a fundamental part of the process. If you’re training a model, calculating analytics, or just combining data from multiple sources and loading them into another system, you’ll need to build a data processing or ETL[1](#f1) pipeline.
任何数据科学项目的核心是...等待...数据!以可靠和可重复的方式准备数据是该过程的基本部分。如果你正在培训一个模型,计算分析,或者只是将来自多个源的数据组合到另一个系统中,那么你将需要构建一个数据处理或ETL[1](#f1)管道。
Copy link
Contributor

@portandbridge portandbridge Jun 13, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wait for it 这个短语本来是一句揭开谜底之前提醒观众的台词(这时背景就会响起鼓声。。。)
“等待”是读不出这层意思的,可以替换成任何能够表达这个意思的中文短语。比如:噔噔噔噔、灯光打过来、听好了听好了……


At Stitch Fix, we practice [full-stack data science](https://multithreaded.stitchfix.com/blog/2019/03/11/FullStackDS-Generalists/). This means that we as data scientists are responsible for taking a project from ideation through production and maintenance. We are [driven by our curiosity](https://multithreaded.stitchfix.com/blog/2019/01/18/fostering-innovation-in-data-science/) and like to move quickly even though our work is often interconnected. The problems we work on are challenging, so the solutions can be complex, but we don’t want to introduce complexity where’s it’s not needed. Because we must support our work in production, our small teams share the responsibility of being on-call and help support each other’s pipelines. This allows us to do important things, like take vacation. This summer, my wife and I are heading to Italy to take the honeymoon we meant to take years ago. The last thing I want to think about while I’m there is whether my teammates are struggling to support and understand the pipelines that I wrote.
在 Stitch Fix 中,我们实践[全栈数据科学](https://multithreaded.stitchfix.com/blog/2019/03/11/FullStackDS-Generalists/)。这意味着我们作为数据科学家正在负责一个项目从构思到生产和维护。我们的[受好奇心驱使好奇心](https://multithreaded.stitchfix.com/blog/2019/01/18/fostering-innovation-in-data-science/)喜欢快速行动,即使我们的工作常常是相互联系的。我们所处理的问题具有挑战性,因此解决方案可能很复杂,但我们不想在不需要的地方引入复杂性。因为我们必须支持我们在生产中的工作,所以我们的小团队分担随叫随到的责任,并帮助支持彼此的管道。这让我们可以做一些重要的事情,比如度假。今年夏天,我和妻子要去意大利度蜜月,这是我们多年前的打算。当我在那里的时候,我最不想考虑的是我的队友们是否在努力支持和理解我写的管道。
Copy link
Contributor

@portandbridge portandbridge Jun 13, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

在 Stitch Fix 中,我们实践 ->
我们 Stitch Fix 这里从事的是

另外,Stitch Fix 是一家售卖服装的电商。下文要利用这条背景信息进行理解


At Stitch Fix, we practice [full-stack data science](https://multithreaded.stitchfix.com/blog/2019/03/11/FullStackDS-Generalists/). This means that we as data scientists are responsible for taking a project from ideation through production and maintenance. We are [driven by our curiosity](https://multithreaded.stitchfix.com/blog/2019/01/18/fostering-innovation-in-data-science/) and like to move quickly even though our work is often interconnected. The problems we work on are challenging, so the solutions can be complex, but we don’t want to introduce complexity where’s it’s not needed. Because we must support our work in production, our small teams share the responsibility of being on-call and help support each other’s pipelines. This allows us to do important things, like take vacation. This summer, my wife and I are heading to Italy to take the honeymoon we meant to take years ago. The last thing I want to think about while I’m there is whether my teammates are struggling to support and understand the pipelines that I wrote.
在 Stitch Fix 中,我们实践[全栈数据科学](https://multithreaded.stitchfix.com/blog/2019/03/11/FullStackDS-Generalists/)。这意味着我们作为数据科学家正在负责一个项目从构思到生产和维护。我们的[受好奇心驱使好奇心](https://multithreaded.stitchfix.com/blog/2019/01/18/fostering-innovation-in-data-science/)喜欢快速行动,即使我们的工作常常是相互联系的。我们所处理的问题具有挑战性,因此解决方案可能很复杂,但我们不想在不需要的地方引入复杂性。因为我们必须支持我们在生产中的工作,所以我们的小团队分担随叫随到的责任,并帮助支持彼此的管道。这让我们可以做一些重要的事情,比如度假。今年夏天,我和妻子要去意大利度蜜月,这是我们多年前的打算。当我在那里的时候,我最不想考虑的是我的队友们是否在努力支持和理解我写的管道。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

~~
作为数据科学家 ->
以数据科学家的身份


At Stitch Fix, we practice [full-stack data science](https://multithreaded.stitchfix.com/blog/2019/03/11/FullStackDS-Generalists/). This means that we as data scientists are responsible for taking a project from ideation through production and maintenance. We are [driven by our curiosity](https://multithreaded.stitchfix.com/blog/2019/01/18/fostering-innovation-in-data-science/) and like to move quickly even though our work is often interconnected. The problems we work on are challenging, so the solutions can be complex, but we don’t want to introduce complexity where’s it’s not needed. Because we must support our work in production, our small teams share the responsibility of being on-call and help support each other’s pipelines. This allows us to do important things, like take vacation. This summer, my wife and I are heading to Italy to take the honeymoon we meant to take years ago. The last thing I want to think about while I’m there is whether my teammates are struggling to support and understand the pipelines that I wrote.
在 Stitch Fix 中,我们实践[全栈数据科学](https://multithreaded.stitchfix.com/blog/2019/03/11/FullStackDS-Generalists/)。这意味着我们作为数据科学家正在负责一个项目从构思到生产和维护。我们的[受好奇心驱使好奇心](https://multithreaded.stitchfix.com/blog/2019/01/18/fostering-innovation-in-data-science/)喜欢快速行动,即使我们的工作常常是相互联系的。我们所处理的问题具有挑战性,因此解决方案可能很复杂,但我们不想在不需要的地方引入复杂性。因为我们必须支持我们在生产中的工作,所以我们的小团队分担随叫随到的责任,并帮助支持彼此的管道。这让我们可以做一些重要的事情,比如度假。今年夏天,我和妻子要去意大利度蜜月,这是我们多年前的打算。当我在那里的时候,我最不想考虑的是我的队友们是否在努力支持和理解我写的管道。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

&&
正在负责 -> 负责
taking 是动名词,没有进行式的意味


At Stitch Fix, we practice [full-stack data science](https://multithreaded.stitchfix.com/blog/2019/03/11/FullStackDS-Generalists/). This means that we as data scientists are responsible for taking a project from ideation through production and maintenance. We are [driven by our curiosity](https://multithreaded.stitchfix.com/blog/2019/01/18/fostering-innovation-in-data-science/) and like to move quickly even though our work is often interconnected. The problems we work on are challenging, so the solutions can be complex, but we don’t want to introduce complexity where’s it’s not needed. Because we must support our work in production, our small teams share the responsibility of being on-call and help support each other’s pipelines. This allows us to do important things, like take vacation. This summer, my wife and I are heading to Italy to take the honeymoon we meant to take years ago. The last thing I want to think about while I’m there is whether my teammates are struggling to support and understand the pipelines that I wrote.
在 Stitch Fix 中,我们实践[全栈数据科学](https://multithreaded.stitchfix.com/blog/2019/03/11/FullStackDS-Generalists/)。这意味着我们作为数据科学家正在负责一个项目从构思到生产和维护。我们的[受好奇心驱使好奇心](https://multithreaded.stitchfix.com/blog/2019/01/18/fostering-innovation-in-data-science/)喜欢快速行动,即使我们的工作常常是相互联系的。我们所处理的问题具有挑战性,因此解决方案可能很复杂,但我们不想在不需要的地方引入复杂性。因为我们必须支持我们在生产中的工作,所以我们的小团队分担随叫随到的责任,并帮助支持彼此的管道。这让我们可以做一些重要的事情,比如度假。今年夏天,我和妻子要去意大利度蜜月,这是我们多年前的打算。当我在那里的时候,我最不想考虑的是我的队友们是否在努力支持和理解我写的管道。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

~~
from ideation through production and maintenance
一个项目从构思到生产和维护 ->
从项目的构思、生产以至维护的整个过程

from 和 through 两个介词表达的是”从头到尾的全过程“


In the case of higher than expected missing values for a particular column, we’d first need to define what’s expected, which might be done by looking at the proportion missing for every day of the last month. We could then define a threshold at which we trigger an alert. This idea can be extended to other data quality checks (e.g., the mean value falls within a range), and we can tune these thresholds to make our alerting more or less sensitive.
在特定列的缺失值高于预期的情况下,我们首先需要定义预期的内容,这可以通过查看上个月每天丢失的比例来完成。然后我们可以定义触发警报的阈值。这个想法可以扩展到其他数据质量检查(例如,平均值落在一个范围内),我们可以调整这些阈值,使我们的警报或多或少敏感。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

&&
使我们的警报或多或少敏感 ->
对警报的敏感度进行增减


In this post, we’ve gone over several practical steps that can make your ETLs easier to maintain, extend, and support in production. These benefits extend to your teammates as well as your future selves. While we can take pride in well-constructed pipelines, writing ETLs is not why we got into data science. Instead, these are a fundamental part of the work that allows us to achieve something bigger: building new models, deriving new insights for the business, or delivering new features through our APIs. Poorly constructed pipelines not only take time away from the team, they create an obstacle to innovation.
在这篇文章中,我们已经完成了几个实际步骤,可以使你的ETL更易于维护,扩展和生产支持。这些好处可以扩展到你的队友以及你未来的自我。虽然我们可以为构建良好的流水线而感到自豪,但编写ETL并不是我们进入数据科学的原因。相反,这些是工作的基本部分,使我们能够实现更大的目标:构建新模型,为业务提供新见解,或通过我们的API提供新功能。建造不良的管道不仅需要时间远离团队,还会给创新带来障碍。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这一整段最好采取意译。直译读起来很别扭。我想想怎么改


At my last job, I learned the hard way that **inaccessible** pipelines can prevent a project from being maintained or extended. I was part of an innovation lab that was spearheading the use of big data tools to tackle various problems in the organization. My first project was to build a pipeline to identify merchants where credit card numbers were being stolen. I built out a solution that used Spark, and the resulting system was highly successful at identifying new fraud activity. However, once I passed this off to the credit card division to support and extend, the problems started. I broke every best practice I’ve listed here in writing the pipeline: it contained a single job that performed many complicated tasks, it was written in Spark which was new to the company at the time, it relied on cron for scheduling and didn’t send alerts when failures occurred, and it didn’t have any data quality checks to ensure that the source data were up-to-date and correct. Due to these deficiencies, there were extended periods of time when the pipeline didn’t run. Despite an extensive roadmap for adding improvements, very few of these could be implemented because the code was hard to understand and extend. Eventually, the whole pipeline was rewritten in a way that could be more easily maintained.
在我上一份工作中,我学到了**难以接近**的艰难道路管道可以防止项目被维护或扩展。我是一个创新实验室的一员,该实验室率先使用大数据工具来解决组织中的各种问题。我的第一个项目是建立一条管道来识别信用卡号被盗的商家。我构建了一个使用 Spark 的解决方案,由此产生的系统在识别新的欺诈活动方面非常成功。然而,一旦我把它传递到信用卡部门支持和扩展,问题就开始了。我在编写管道时打破了我列出的所有最佳实践:它包含一个执行许多复杂任务的作业,它是用 Spark 编写的,当时对公司来说是新的,它依赖于 cron 进行调度并且没有'发生故障时发送警报,它没有任何数据质量检查,以确保源数据是最新的和正确的。由于这些缺陷,管道没有运行的时间延长。尽管有一个广泛的路线图来增加改进,但由于代码很难理解和扩展,因此很少能够实现这些改进。最终,整个管道以一种更容易维护的方式重写
Copy link
Contributor

@portandbridge portandbridge Jun 15, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

&&
在我上一份工作中,我学到了 ->
我在上一份工作中尝到的苦果,让我明白到

learn something the hard way,字面上看是说“用艰难的方式学会某事”,实际想表达的是“经历了不良的后果才学会”


At my last job, I learned the hard way that **inaccessible** pipelines can prevent a project from being maintained or extended. I was part of an innovation lab that was spearheading the use of big data tools to tackle various problems in the organization. My first project was to build a pipeline to identify merchants where credit card numbers were being stolen. I built out a solution that used Spark, and the resulting system was highly successful at identifying new fraud activity. However, once I passed this off to the credit card division to support and extend, the problems started. I broke every best practice I’ve listed here in writing the pipeline: it contained a single job that performed many complicated tasks, it was written in Spark which was new to the company at the time, it relied on cron for scheduling and didn’t send alerts when failures occurred, and it didn’t have any data quality checks to ensure that the source data were up-to-date and correct. Due to these deficiencies, there were extended periods of time when the pipeline didn’t run. Despite an extensive roadmap for adding improvements, very few of these could be implemented because the code was hard to understand and extend. Eventually, the whole pipeline was rewritten in a way that could be more easily maintained.
在我上一份工作中,我学到了**难以接近**的艰难道路管道可以防止项目被维护或扩展。我是一个创新实验室的一员,该实验室率先使用大数据工具来解决组织中的各种问题。我的第一个项目是建立一条管道来识别信用卡号被盗的商家。我构建了一个使用 Spark 的解决方案,由此产生的系统在识别新的欺诈活动方面非常成功。然而,一旦我把它传递到信用卡部门支持和扩展,问题就开始了。我在编写管道时打破了我列出的所有最佳实践:它包含一个执行许多复杂任务的作业,它是用 Spark 编写的,当时对公司来说是新的,它依赖于 cron 进行调度并且没有'发生故障时发送警报,它没有任何数据质量检查,以确保源数据是最新的和正确的。由于这些缺陷,管道没有运行的时间延长。尽管有一个广泛的路线图来增加改进,但由于代码很难理解和扩展,因此很少能够实现这些改进。最终,整个管道以一种更容易维护的方式重写
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

~~
难以接近的艰难道路管道可以防止项目被维护或扩展 ->
管道如果_____,就会让项目难以维护和扩展


At my last job, I learned the hard way that **inaccessible** pipelines can prevent a project from being maintained or extended. I was part of an innovation lab that was spearheading the use of big data tools to tackle various problems in the organization. My first project was to build a pipeline to identify merchants where credit card numbers were being stolen. I built out a solution that used Spark, and the resulting system was highly successful at identifying new fraud activity. However, once I passed this off to the credit card division to support and extend, the problems started. I broke every best practice I’ve listed here in writing the pipeline: it contained a single job that performed many complicated tasks, it was written in Spark which was new to the company at the time, it relied on cron for scheduling and didn’t send alerts when failures occurred, and it didn’t have any data quality checks to ensure that the source data were up-to-date and correct. Due to these deficiencies, there were extended periods of time when the pipeline didn’t run. Despite an extensive roadmap for adding improvements, very few of these could be implemented because the code was hard to understand and extend. Eventually, the whole pipeline was rewritten in a way that could be more easily maintained.
在我上一份工作中,我学到了**难以接近**的艰难道路管道可以防止项目被维护或扩展。我是一个创新实验室的一员,该实验室率先使用大数据工具来解决组织中的各种问题。我的第一个项目是建立一条管道来识别信用卡号被盗的商家。我构建了一个使用 Spark 的解决方案,由此产生的系统在识别新的欺诈活动方面非常成功。然而,一旦我把它传递到信用卡部门支持和扩展,问题就开始了。我在编写管道时打破了我列出的所有最佳实践:它包含一个执行许多复杂任务的作业,它是用 Spark 编写的,当时对公司来说是新的,它依赖于 cron 进行调度并且没有'发生故障时发送警报,它没有任何数据质量检查,以确保源数据是最新的和正确的。由于这些缺陷,管道没有运行的时间延长。尽管有一个广泛的路线图来增加改进,但由于代码很难理解和扩展,因此很少能够实现这些改进。最终,整个管道以一种更容易维护的方式重写
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

~~
我是一个创新实验室的一员 ->
我当时在某个创新实验室工作

Copy link
Contributor

@portandbridge portandbridge left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

大部分的校对已经完成 @fireairforce


Just like the data science project that your ETL is feeding, your pipeline will never truly be complete and should be seen as being perpetually in flux. With each change you make comes the opportunity to make small improvements: increase the readability, remove unused data sources and logic, or simplify or break up complex tasks. None of these recommendations are groundbreaking, but it requires discipline to follow them consistently. Much like lion taming, when pipelines are small, they are relatively easy to keep under control. However, as they grow, they become more unwieldy and prone to sudden unexpected and chaotic behavior. In the end, you either need to start fresh and follow better practices or risk losing your head[5](#f5).
就像你的 ETL 正在进行的数据科学项目一样,你的管道永远不会真正完整,应该被视为永远不断变化。通过每次更改,你都可以进行小的改进:提高可读性,删除未使用的数据源和逻辑,或简化或分解复杂的任务。这些建议都没有开创性,但需要遵守纪律,始终如一地遵循这些建议。就像狮子驯服一样,当管道很小时,它们相对容易控制。然而,随着它们的成长,它们变得更加笨拙并且容易出现突然的意外和混乱行为。最后,你需要重新开始并遵循更好的做法或冒着失去理智的风险(5)[#f5]。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

&&
通过每次更改,你都可以进行小的改进 ->
每次更改都是实现小幅改进的契机


Just like the data science project that your ETL is feeding, your pipeline will never truly be complete and should be seen as being perpetually in flux. With each change you make comes the opportunity to make small improvements: increase the readability, remove unused data sources and logic, or simplify or break up complex tasks. None of these recommendations are groundbreaking, but it requires discipline to follow them consistently. Much like lion taming, when pipelines are small, they are relatively easy to keep under control. However, as they grow, they become more unwieldy and prone to sudden unexpected and chaotic behavior. In the end, you either need to start fresh and follow better practices or risk losing your head[5](#f5).
就像你的 ETL 正在进行的数据科学项目一样,你的管道永远不会真正完整,应该被视为永远不断变化。通过每次更改,你都可以进行小的改进:提高可读性,删除未使用的数据源和逻辑,或简化或分解复杂的任务。这些建议都没有开创性,但需要遵守纪律,始终如一地遵循这些建议。就像狮子驯服一样,当管道很小时,它们相对容易控制。然而,随着它们的成长,它们变得更加笨拙并且容易出现突然的意外和混乱行为。最后,你需要重新开始并遵循更好的做法或冒着失去理智的风险(5)[#f5]。
Copy link
Contributor

@portandbridge portandbridge Jun 15, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

&&
这些建议都没有开创性,但需要遵守纪律,始终如一地遵循这些建议。 ->
这些建议并不是什么重大突破,但如果要始终如一地践行,就需要自律。

这句需要与前一句衔接。
前一句讲的都是小改进,所以这里说它们并不是什么重大突破。翻译成“没有开创性”的话,会解读出批判的含义。


Just like the data science project that your ETL is feeding, your pipeline will never truly be complete and should be seen as being perpetually in flux. With each change you make comes the opportunity to make small improvements: increase the readability, remove unused data sources and logic, or simplify or break up complex tasks. None of these recommendations are groundbreaking, but it requires discipline to follow them consistently. Much like lion taming, when pipelines are small, they are relatively easy to keep under control. However, as they grow, they become more unwieldy and prone to sudden unexpected and chaotic behavior. In the end, you either need to start fresh and follow better practices or risk losing your head[5](#f5).
就像你的 ETL 正在进行的数据科学项目一样,你的管道永远不会真正完整,应该被视为永远不断变化。通过每次更改,你都可以进行小的改进:提高可读性,删除未使用的数据源和逻辑,或简化或分解复杂的任务。这些建议都没有开创性,但需要遵守纪律,始终如一地遵循这些建议。就像狮子驯服一样,当管道很小时,它们相对容易控制。然而,随着它们的成长,它们变得更加笨拙并且容易出现突然的意外和混乱行为。最后,你需要重新开始并遵循更好的做法或冒着失去理智的风险(5)[#f5]。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

~~
然而,随着它们的成长,它们变得更加笨拙并且容易出现突然的意外和混乱行为。 ->
然而,它们长得越大,就越难管控,也越容易表现出突发且意外的错乱行为。


[[4]↩](#back-4) Some operations such as manipulating dates and extracting fields from JSON require modifying the queries, but these changes are minimal.
[[4]↩](#back-4) 操作日期和从JSON中提取字段等操作需要修改查询,但这些更改很少。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

少?


Just like the data science project that your ETL is feeding, your pipeline will never truly be complete and should be seen as being perpetually in flux. With each change you make comes the opportunity to make small improvements: increase the readability, remove unused data sources and logic, or simplify or break up complex tasks. None of these recommendations are groundbreaking, but it requires discipline to follow them consistently. Much like lion taming, when pipelines are small, they are relatively easy to keep under control. However, as they grow, they become more unwieldy and prone to sudden unexpected and chaotic behavior. In the end, you either need to start fresh and follow better practices or risk losing your head[5](#f5).
就像你的 ETL 正在进行的数据科学项目一样,你的管道永远不会真正完整,应该被视为永远不断变化。通过每次更改,你都可以进行小的改进:提高可读性,删除未使用的数据源和逻辑,或简化或分解复杂的任务。这些建议都没有开创性,但需要遵守纪律,始终如一地遵循这些建议。就像狮子驯服一样,当管道很小时,它们相对容易控制。然而,随着它们的成长,它们变得更加笨拙并且容易出现突然的意外和混乱行为。最后,你需要重新开始并遵循更好的做法或冒着失去理智的风险(5)[#f5]。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

~~
In the end, you either need to start fresh and follow better practices or risk losing your head5.
最后,你需要重新开始并遵循更好的做法或冒着失去理智的风险(5)[#f5]。 ->
到了那种地步,你只得重新开始、采取更好的做法,不然就可能会______(5)[#f5]。

@leviding
Copy link
Member

@portandbridge 辛苦啦 @fireairforce 可以修改下

@leviding leviding added the enhancement 等待译者修改 label Jun 16, 2019
@fireairforce
Copy link
Contributor Author

已经修改完了,最近太忙了QAQ

@leviding leviding added 标注 待管理员 Review and removed enhancement 等待译者修改 labels Jun 17, 2019
Copy link
Member

@leviding leviding left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

注意格式问题哈

@leviding leviding merged commit 91edd10 into xitu:master Jun 18, 2019
@leviding
Copy link
Member

@fireairforce 已经 merge 啦~ 快快麻溜发布到掘金然后给我发下链接,方便及时添加积分哟。

掘金翻译计划有自己的知乎专栏,你也可以投稿哈,推荐使用一个好用的插件
专栏地址:https://zhuanlan.zhihu.com/juejinfanyi

@fireairforce
Copy link
Contributor Author

https://juejin.im/post/5d08e178518825166f36bf89

已发布啦~这次没有麻溜的发布QAQ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

可维护的 ETL: 使管道更容易支持和扩展的技巧
5 participants