Reply
 
Thread Tools
  #51  
Old 05-03-2020, 18:28
cauthungoaihang's Avatar
cauthungoaihang cauthungoaihang is offline
Senior Member
Join Date: 06-2008
Posts: 177
Re: Hướng đi nào cho Data Engineer, BI, Data Warehouse, Big Data.

Quote:
Originally Posted by ez-aqua View Post
Nói chung mình ko rành vụ crawl web data, nhưng mà nếu mà do javascript phải bấm thì web mới generate data, thì bạn thử tìm cách bắt luôn được cái địa chỉ API của nó rồi request trực tiếp vào cái API đó xem. Chứ selenium thấy cực quá.

Nếu mà bạn append only thì quá sướng luôn. Data mà lớn, append-only, có mốc thời gian rõ ràng thì cứ columnstore, partition mà dã. Chứ như mình do hầu hết các bảng fact quan trọng đều sẽ ở dạng Accumulating snapshot. Bên mình làm là gia công xử lý thông tin cho người ta, mỗi thực thể đi vào hệ thống của mình sẽ phải trải qua các bước xử lý từ lúc nhận cho đến khi kết thúc, và người ta muốn phân tích xem cái thực thể đó phải trải qua những bước nào và mất bao lâu. Đồng thời không có rule chốt sổ nên bọn chúng đều có thể đội mồ sống dậy bất kì lúc nào, kể cả những thực thể từ 1 năm trước. Nói chung update điên cuồng.

Về vụ modeling, mình thấy cái việc chọn Star-Schema hay flat-table sẽ chủ yếu nằm ở việc bạn có update hay không và bạn có muốn tìm "thằng nào không có hay không". VD nếu bạn làm flat table, bạn sẽ không bao giờ trả lời được câu hỏi kiểu "tìm thằng nào không có đơn hàng nào" (vì ko có đơn nào thì không bao giờ cái tên đó xuất hiện được trong bảng fact). Với việc update, nếu bạn có star-schema thì update đơn giản hơn rất nhiều. Hay bạn muốn chơi mix SCD 1, 2, kiểu field thì SCD 1 (VD như tên công ty) nhưng field khác lại là SCD2 (Thành phố công ty đó đóng quân, có thể tháng này nó đổi trụ sở tháng khác nó đổi trụ sở)... thì mình nghĩ Star-schema tốt hơn nhiều. Có thể sẽ cần đến snow-flake nếu bạn có vấn đề với việc tìm những thằng không có, đánh đổi thì sẽ là performance. Bạn càng phải join nhiều thì performance càng bị ảnh hưởng.

Bạn thử xem fact của data của bạn là dạng additive hay là periodic snapshot. Additive nghĩ là bạn dùng hàm sum thoải mái, aggregate sao cũng được. (Ví dụ đơn hàng 1 ngày 1 Giá 10$, đơn hàng 2 ngày 2 giá 20$ thì tổng số tiền hàng tháng đó là 30$.). Còn Semi additive bạn không aggregate trên dimension thời gian được. (VD ngày 1 trong kho cam dư 10kg, táo dư 20 kg. ngày 2 cam dư 20kg táo dư 10 kg). Bạn có thể aggregate rằng ngày 1 tôi dư tổng cộng 30 kg cả cam lẫn táo, nhưng không được tính tổng số cam dư trong tháng là 30kg (NGày 1 cam 10, + ngày 2 cam 20). Mình thấy bạn ghi dữ liệu địa lí thì mình e rất có khả năng dính vào dạng periodic snapshot này. (VD nhiệt độ từng vùng)

Nói chung việc bạn phải đối mặt với dữ liệu rất nhiều nguồn + nhỏ nhưng lại append-only thì đó cũng là một kiểu khó khăn và thuận lợi. Còn như bên mình thì ít nguồn nhưng dữ liệu trong bản thân những nguồn đó rất hỗn loạn, phải handle update và monitor update rất nặng, đó cũng là một kiểu khó khăn và thuận lợi. Mình thấy rút cục thì data lớn hay nhỏ nó cũng chẳng quan trọng nữa. Vì lớn nó đều có vấn đề của lớn và nhỏ cũng đều có vấn đề của nhỏ. Mà đôi khi lớn còn dễ vì ít nhất khi mình tìm tài liệu, mình cảm thấy tìm các solution đối phó với data lớn dễ hơn là data nhỏ.

Mà cho mình hỏi bạn chơi cái Power BI là bạn đang chơi bảng phẳng hay có nhiều table link với nhau. Vì mình cảm thấy như những gì bạn nói thì có vẻ bạn đang dùng Power BI report bảng phẳng?
1355308
Sorry thím bữa giờ cũng hơi lu bu với project nên hơi chậm tí ^^
Mình đã thử thành công Splash kết hợp với Scrapy để render Javascript và lấy data từ các web, nên tạm thời tạm không thử Selenium nữa. Web nào không có JS thì mình xài request mặc định luôn, khỏi cần scrapy. In case thím cần thông tin về web crawling dùng scrapy thì hú nhé.
Data của mình gần như là toàn là Append-only, nên cũng khỏe, chỉ cần không để duplicate là được Có một số data cần update, nhưng có mốc thời gian rõ ràng nên cũng không gặp vấn đề gì. Update như bên thím mà với lượng lớn dữ liệu thì quả là một ác mộng >”<
Việc thiết kế database để làm analysis thì hơi nặng nề, vì một số dữ liệu là additive (ví dụ dữ liệu xuất nhập khẩu), một số là periodic snapshot (như dữ liệu tồn kho, open interest…), và chắc chắn có yêu cầu là kết hợp lại để tạo ra một báo cáo. Mình thì từ lúc xài Power BI là đã luôn sử dụng star-schema, một phần vì nó recommend vậy, một phần vì ra báo cáo rất tiện khi có các bảng lookup để sử dụng chung cho nhiều bảng khác.
Hai tuần vừa rồi có tiến triển rất tốt khi mình đã lên khung được Postgres database, test được các spiders để crawl và đẩy dữ liệu vào okie. Giờ đến bước áp dụng thực tế cho từng datasource, chắc phải vài tháng nữa vì rất nhiều source khác nhau. Khi nào vướng thì lại hú thím nhé ^^
__________________
Nothing to sign
Reply With Quote
Reply

« Previous Thread | Next Thread »
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


All times are GMT +7. The time now is 17:24.