博客

Databend 开源周报第 147 期

avatarDatabend Labs6月 3, 2024
Databend 开源周报第 147 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn

What's On In Databend

探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。

支持嵌入 Python UDFs

继支持 WASM 和 JavaScript 之后,Databend 现已支持使用 Python 作为嵌入用户定义函数。Python UDFs 允许用户在 SQL 查询中嵌入 Python 代码,进行数据处理和分析,提供更加灵活易用的定制化数据处理方案,以应对复杂业务逻辑的挑战。

此外,Python UDFs 还为用户直接在数据仓库中进行高级分析(如,机器学习、统计分析等)提供可能,使数据分析师和数据科学家可以在一个上下文中完成所有数据操作,简化数据处理流程,减少数据移动和切换不同工具的时间。

下面是一个简单的文本情感分析示例:

-- Create the sentiment analysis function
CREATE OR REPLACE FUNCTION sentiment_analysis(STRING) RETURNS STRING
LANGUAGE python HANDLER = 'sentiment_analysis'
AS $$
def sentiment_analysis(text):
"""
Analyzes the sentiment of the input text by removing stop words and calculating the sentiment score.

Args:
text (str): The input text.

Returns:
str: Sentiment analysis result including the score and label.
"""
stop_words = {"a", "an", "the", "and", "or", "but", "if", "then", "so"}
positive_words = {"good", "happy", "joy", "excellent", "positive", "love"}
negative_words = {"bad", "sad", "pain", "terrible", "negative", "hate"}

# Remove stop words and calculate sentiment score
words = [word for word in text.split() if word.lower() not in stop_words]
score = sum((1 if word.lower() in positive_words else -1 if word.lower() in negative_words else 0) for word in words)

# Determine sentiment label
if score > 0:
label = 'Positive'
elif score < 0:
label = 'Negative'
else:
label = 'Neutral'

return f'Sentiment Score: {score}; Sentiment Label: {label}'
$$;

CREATE OR REPLACE TABLE texts (
original_text STRING
);

-- Insert sample data
INSERT INTO texts (original_text)
VALUES
('The quick brown fox feels happy and joyful'),
('A hard journey, but it was painful and sad'),
('Uncertain outcomes leave everyone unsure and hesitant'),
('The movie was excellent and everyone loved it'),
('A terrible experience that made me feel bad');

-- Query to process the table data
SELECT
original_text,
sentiment_analysis(original_text) AS processed_text
FROM
texts;

这项特性已经在 Databend Cloud 上开箱可用,如果您想了解更多信息,欢迎联系 Databend 团队,或查看下面列出的资源。

Highlights

以下是一些值得注意的事件,也许您可以找到感兴趣的内容。

  • 支持几何函数
    ST_YMAX
    ST_XMIN
    ST_YMIN
  • 新增一系列进程相关指标。
  • 增强数据表锁定机制,进一步提升数据一致性和操作安全性。

What's Up Next

我们始终对前沿技术和创新理念持开放态度,欢迎您加入社区,为 Databend 注入活力。

支持修正 Bloom Index

尽管 Databend 已存在类似于倒排索引的重建机制(如 REFRESH INVERTED INDEX),但仍然缺少用于修正或重建布隆索引的方法。可能会导致索引数据不一致或丢失,从而影响数据查询的性能和准确性。

鉴于此,我们计划在后续支持 REFRESH BLOOM INDEX 语句,以支持手动更新布隆索引。结合 TASK 等机制,即可做到自动定期更新。

Issue #15670 | Feature: need a way to amend bloom index (rebuild missing indexes)

如果你对这个主题感兴趣,可以尝试解决其中的部分问题或者参与讨论和 PR review 。或者,你可以点击 https://link.databend.rs/i-m-feeling-lucky 来挑选一个随机问题,祝好运!

Changelog

前往查看 Databend 每日构建的变更日志,以了解开发的最新动态。

地址:https://github.com/databendlabs/databend/releases

分享本篇文章

订阅我们的新闻简报

及时了解功能发布、产品规划、支持服务和云服务的最新信息!