Tôi có một số ảnh chụp nhanh của cơ sở dữ liệu không phải là thời gian. Ví dụ:
Ảnh chụp ngày 1:
+----+---------------+------------+------------+ | ID | Title | Category | Date | +----+---------------+------------+------------+ | 1 | My First Post | helloworld | 2015-01-01 | +----+---------------+------------+------------+
Ảnh chụp ngày 2 (Một bài đăng mới được thêm vào hôm nay):
+----+----------------+------------+------------+ | ID | Title | Category | Date | +----+----------------+------------+------------+ | 1 | My first post | helloworld | 2015-01-01 | | 2 | My second post | other | 2015-01-02 | +----+----------------+------------+------------+
Ảnh chụp ngày 3 (Bài 2 bị xóa hôm nay):
+----+---------------+------------+------------+ | ID | Title | Category | Date | +----+---------------+------------+------------+ | 1 | My First Post | helloworld | 2015-01-01 | +----+---------------+------------+------------+
Vì vậy, giữa các ngày, một hàng của bảng có thể hoặc không có thể là hằng số. Bây giờ, tôi cần có thể sử dụng một truy vấn như thế này:
SELECT category, COUNT(*) from day1.My_table group by category
Đây là cho một bảng của một ngày. Nếu chúng ta muốn tính trung bình hàng ngày của các bài đăng theo danh mục trong một tháng, chúng ta nên làm một cái gì đó như:
SELECT category, SUM(cnt) / 30
from (
SELECT category, COUNT(*) as cnt
from day1.My_table
group by category
UNION ALL SELECT category, COUNT(*) as cnt
from day2.My_table
group by category
UNION ALL ...
UNION ALL SELECT category, COUNT(*) as cnt
from day30.My_table
group by category
) group by category
Một ví dụ khác, số lượng bài đăng được xuất bản trong một tháng :
SELECT COUNT(distinct id)
from (
SELECT id
from day1.My_table
UNION ALL ...
UNION ALL SELECT id
from day30.My_table
)
Về cơ bản chúng ta sẽ cần phải xem xét một trọng lượng. Nếu chúng ta có day1.My_table và day5.My_table, mọi bài đăng trong day1 và không trong day5 sẽ được tính như trong ngày 2,3,4. Mỗi bài đăng là day1 và day5 sẽ được tính như thể nó là vào mỗi ngày trong tháng (= cho đến ảnh chụp nhanh tiếp theo).
Vì vậy, trong trường hợp tôi muốn xem xét số lượng bài đăng trung bình mỗi ngày> = 6 tháng một lần, trong đó tôi chỉ có 1 ảnh chụp nhanh, tôi sẽ chỉ định cho ảnh chụp nhanh đó có trọng lượng 30.
Vì vậy, bài đăng trung bình được xuất bản trong một tháng cho một phạm vi> = 6 tháng trước là:
SELECT category, SUM(cnt) / 30
from (
SELECT category, COUNT(*)*30 as cnt
from day1.My_table
group by category --- Note: I'm not considering the range defined from the user in this example.
) group by category;
Như bình luận cũng đã nêu, tôi sẽ cần phải thực hiện một truy vấn như:
Select category, AVG(*)
from [fromRange-toRange].MyTable;
Đối với một giải pháp cực đoan, tôi đang xem xét ý tưởng triển khai một ngôn ngữ kim loại để cho phép người dùng trong tương lai (ví dụ như người tiếp thị) thực hiện một truy vấn như thế này.
Bạn có nghĩ rằng có một cách để thực hiện điều này trong Khoan mà không cần ngôn ngữ meta? Tôi sẽ làm điều này bằng cách sử dụng UDF đệ quy nhưng họ không thể trả về các truy vấn.
Mỗi ảnh chụp nhanh có dung lượng lớn 250 GB và tôi muốn có thể so sánh các tập dữ liệu này với các dữ liệu bên ngoài khác (tôi không biết trước sơ đồ của các tập dữ liệu này).
Có một giải pháp phù hợp cho Apache Drill không? Hoặc có một giải pháp khác cho vấn đề này?
Ngoài ra, bất kỳ ngôn ngữ meta hoặc giấy về vấn đề này đều được đánh giá cao.
Chỉnh sửa: Chúng tôi chưa có dữ liệu giao dịch. Chúng tôi có dữ liệu thay đổi theo thời gian và có thể được thêm hoặc xóa; vì lý do này, chúng tôi cần ảnh chụp nhanh hàng ngày. Ngoài ra, chúng tôi không biết trước các truy vấn sẽ được thực hiện, vì vậy chúng tôi không thể biết loại tổng hợp nào sẽ được thực hiện. Ngoài ra, mỗi hàng có khoảng 100 cột và có khoảng 250 GB cho mỗi ảnh chụp nhanh (bảng Mysql). Chúng tôi cũng cần tìm kiếm toàn văn trên dữ liệu này trên mỗi hàng, vào mỗi ngày có thể.
Một ví dụ về tìm kiếm có thể là "Có bao nhiêu bài viết về đôi khi?" Vì vậy, nó phải tìm kiếm tất cả các bài viết cho từ khóa đôi khi. Mỗi ảnh chụp có thể có hoặc không có cùng hàng. Ngoài ra hai ảnh chụp nhanh có thể có cùng một bài, nhưng sửa đổi một chút.
table definitions/structures