小编Aji*_*ity的帖子

在星型模式中设置分辨率的时间维度

我一直在阅读一些有关 OLAP 处理的体系结构类型的文章,特别是星型模式概念。我目前正在建立一个数据库进行测试。

我的情况

我有 750 个传感器,每个传感器每分钟都会将数据发布到 SQL 数据库。目前,我的方法是在值发生变化发布。进一步思考这一点让我想知道它是否会在确定是否存在数据丢失与未更改的值时造成问题,并使我重新考虑预定的发布。

插入传感器值的软件会以 格式发布时间戳2020-01-23 13:48:52。除此之外,还发布了传感器名称和传感器值。因此,如果算上主键,我的事实表中有 4 列。

我知道我需要对我的数据进行一些中间处理(可能是按计划处理的表,以使其符合架构,然后将其删除),但现在我正在尝试保持这种高级别并一次解决一个问题。

这是我目前的设想,但考虑到我需要的分辨率,我不知道如何处理时间维度。

星型架构模型

我的问题

目前,我的方法是发布值是否发生变化。进一步思考这一点让我想知道它是否会在确定是否存在数据丢失与未更改的值时造成问题,并使我重新考虑预定的发帖。

这是识别数据丢失的合理担忧还是有其他方法来解决这个问题?

考虑到我所需的分辨率,样本时间维度会是什么样子?

database-design data-warehouse star-schema

3
推荐指数
1
解决办法
1662
查看次数

Python UpSert - 参数不足

今天这有点令人沮丧。我确信我忽略了一些简单的事情。请参阅下面的代码(为了示例而简化):

def dbUpsert(sqlQuery, sqlValues):
    # Connect to the database
    connection = pymysql.connect(host='localhost',
                                user='db_user',
                                password='###',
                                db='garden',
                                charset='utf8mb4',
                                cursorclass=pymysql.cursors.DictCursor)
    try:
        with connection.cursor() as cursor:
            # Create a new record
            cursor.execute(sqlQuery, sqlValues)
        # Commit the changes
        connection.commit()
    finally:
        connection.close()


sqlValues = real_plants, datetime.datetime.today().strftime('%Y-%m-%d'),  10
print (sqlValues)
##### Output: ('roses', '2020-02-19', 10)

sqlQuery = """
    INSERT INTO summ_plants_day 
        (
            real_plants, d_date, acc_plants
        )
    VALUES (%s, %s, %s)
    ON DUPLICATE KEY UPDATE
        real_plants = %s,
        d_date = %s,
        acc_plants = %s
    """
dbUpsert(sqlQuery, sqlValues)
Run Code Online (Sandbox Code Playgroud)

在我的数据库中,我有 …

python mysql sql sql-update sql-insert

3
推荐指数
1
解决办法
512
查看次数