企业网站建设实训心得/百度seo规则

企业网站建设实训心得,百度seo规则,上海建设资质审批网站,成都网站建设哪家在本文中,我们将探讨如何利用dbt项目的代码库来实现一个简单的SQLMesh项目。本文的基础是基于Udemy讲师为dbt课程创建的示例项目,可以在这个GitHub repo中获得。这个dbt项目是相对完整的示例,我们将使用它作为模板来演示SQLMesh(下…

在本文中,我们将探讨如何利用dbt项目的代码库来实现一个简单的SQLMesh项目。本文的基础是基于Udemy讲师为dbt课程创建的示例项目,可以在这个GitHub repo中获得。这个dbt项目是相对完整的示例,我们将使用它作为模板来演示SQLMesh(下一代数据转换工具)的功能。

dbt示例项目在Snowflake中使用Airbnb数据集分析端到端的数据工程工作流。该项目包括将原始数据加载到Snowflake中,创建各种模型,并执行转换以从数据中获得有意义的见解。我们打算使用duckdb作为分析数据库,方便读者直接在本机上测试运行。

简要说明Airbnb数据集

本项目中使用的Airbnb数据集由三个主表组成:raw_listings、raw_reviews和raw_hosts。这些表格包含有关Airbnb房源的信息、对房源的评论以及房东的详细信息。理解这些表之间的关系和意义对于处理和分析数据至关重要。

  1. raw_listings(原始房源信息):
    • 描述:此表包含有关爱彼迎房源的详细信息,包括房源 ID、网址、名称、房型、最短入住天数、房东 ID、价格以及创建和更新的时间戳。
    • 重要性:房源数据提供了爱彼迎上可用房源的全面视图。它是与评论和房东数据相连接的核心表。

  2. 原始评论:
    • 描述:此表包含爱彼迎房源的评论,包含房源 ID、评论日期、评论者姓名、评论内容和情感倾向等信息。
    • 重要性:评论数据能提供有关客户体验和满意度的见解。它通过房源 ID 与房源数据相关联。

  3. raw_hosts:
    • 描述:此表包含有关房源的信息,包括房源 ID、名称、超级房源状态以及创建和更新的时间戳。
    • 重要性:房源数据提供了有关提供房源的个人或实体的详细信息。它通过 host_id 与房源数据相关联。

项目最终目标

本项目的首要目标是分析满月日期对爱彼迎(Airbnb)评分和评论的影响。通过利用房源、评论和房东之间的关系,我们旨在得出有关月相周期对客户反馈和满意度影响的有意义的见解。

实现SQLMesh项目的步骤

  1. 初始化SQLMesh项目

​ 创建一个名为airbnb_sqlmesh的文件夹,并进入该文件夹。执行如下命令初始化SQLMesh项目:

python -m venv .venv
source .venv/bin/activate
pip install "sqlmesh"
sqlmesh init duckdb
  1. 项目结构

    在初始化完成后,将会创建以下目录和文件,从而为我们的 SQLMesh 项目提供组织结构:
    • config.yaml:用于您项目的数据库配置文件。
    • models:存放 SQL 和 Python 模型的目录。
    • audits:存放共享审计的目录。
    • tests:存放单元测试的目录。
    • macros:存放宏的目录。

​ 删除models、seeds以及tests目录下的示例文件,后续我们会添加实际业务需要的模型。

  1. 项目配置

    在配置文件中定义SQLMesh项目配置。yaml文件。该文件包含数据库连接细节和模型默认值:

gateways:duckdb:connection:type: duckdbdatabase: dw.dbdefault_gateway: duckdbmodel_defaults:dialect: duckdbstart: 2025-03-17
  1. 加载原始数据

    使用以下SQL脚本将原始数据加载到duckdb表中:

INSTALL httpfs;
LOAD httpfs;-- Create and load raw_listings table
CREATE OR REPLACE TABLE raw_listings (id integer,listing_url string,name string,room_type string,minimum_nights integer,host_id integer,price string,created_at datetime,updated_at datetime
);COPY raw_listings FROM 's3://dbtlearn/listings.csv' (ignore_errors true);-- Create and load raw_reviews table
CREATE OR REPLACE TABLE raw_reviews (listing_id integer,date datetime,reviewer_name string,comments string,sentiment string
);COPY raw_reviews FROM 's3://dbtlearn/reviews.csv' (ignore_errors true);-- Create and load raw_hosts table
CREATE OR REPLACE TABLE raw_hosts (id integer,name string,is_superhost string,created_at datetime,updated_at datetime
);COPY raw_hosts FROM 's3://dbtlearn/hosts.csv' (ignore_errors true);

创建模型

源(Source )模型

我们在 models/source 文件夹内的原始数据表基础上创建了三个模型 src_hosts.sql、src_listings.sql 和 src_reviews.sql:
本项目中的源模型旨在对来自 Airbnb 数据集的原始数据进行标准化和准备,以便进一步处理和分析。它们充当中间层,通过重命名列、选择相关字段以及标准化数据等方式将原始数据转换为更易于使用的格式。所有源模型都被实现为视图,确保数据干净、结构化,并为后续在维度和事实模型中的转换和分析做好准备。

src_listings.sql 模型:

MODEL (  name src.SRC_LISTINGS,kind view
);WITH mr_listings AS (SELECT * FROM main.RAW_LISTINGS
)
SELECTid AS listing_id,name AS listing_name,listing_url,room_type,minimum_nights,host_id,price AS price_str,created_at,updated_at
FROM mr_listings;

src_reviews.sql模型:

MODEL (name src.SRC_REVIEWS,kind view
);WITH mr_reviews AS (SELECT * FROM main.raw_reviews
)
SELECTlisting_id,date AS review_date,reviewer_name,comments AS review_text,sentiment AS review_sentiment
FROM mr_reviews;

src_hosts.sql模型:

MODEL (name src.SRC_HOSTS,kind view
);WITH mr_hosts AS (SELECT * FROM main.RAW_HOSTS
)
SELECTid AS host_id,name AS host_name,is_superhost,created_at,updated_at
FROM mr_hosts;

运行命令,生成源模型:

sqlmesh plan dev 

生成src__dev schema以及三个视图:

D select table_catalog, table_schema,table_name, table_type from information_schema.tables where table_schema='src__dev';
┌───────────────┬──────────────┬──────────────┬────────────┐
│ table_catalog │ table_schema │  table_name  │ table_type │
│    varchar    │   varchar    │   varchar    │  varchar   │
├───────────────┼──────────────┼──────────────┼────────────┤
│ dw            │ src__dev     │ src_hosts    │ VIEW       │
│ dw            │ src__dev     │ src_listings │ VIEW       │
│ dw            │ src__dev     │ src_reviews  │ VIEW       │
└───────────────┴──────────────┴──────────────┴────────────┘

维度模型

在models/dim文件夹中创建维度模型作为视图:

维度模型实现对源数据的清理、丰富和组合,以便进行详细分析。它们处理空值、格式化字段和合并相关数据集。模型dim.dim_hosts_cleaned和dim. dim_listings_cleaned被具体化为视图,而dim.dim_listings_w_hosts被具体化为一个完整的表,每次都完全重新加载。

dim.dim_hosts_cleaned模型:

MODEL (name dim.dim_hosts_cleansed,kind view
);WITH src_hosts AS (SELECT * FROM SOURCE.SRC_HOSTS
)
SELECThost_id,NVL(host_name, 'Anonymous') AS host_name,is_superhost,created_at,updated_at
FROM src_hosts;

dim. dim_listings_cleaned模型:

MODEL (name dim.dim_listings_cleansed,kind view
);WITH src_listings AS (SELECT * FROM SOURCE.SRC_LISTINGS
)
SELECTlisting_id,listing_name,room_type,CASE WHEN minimum_nights = 0 THEN 1 ELSE minimum_nights END AS minimum_nights,host_id,REPLACE(price_str, '$', '')::NUMERIC(10, 2) AS price,created_at,updated_at
FROM src_listings;

dim.dim_listings_w_hosts模型

MODEL (name dim.dim_listings_w_hosts,kind full
);WITH l AS (SELECT * FROM dim.dim_listings_cleansed
),
h AS (SELECT * FROM dim.dim_hosts_cleansed
)
SELECTl.listing_id,l.listing_name,l.room_type,l.minimum_nights,l.price,l.host_id,h.host_name,h.is_superhost AS host_is_superhost,l.created_at,GREATEST(l.updated_at, h.updated_at) AS updated_at
FROM l
LEFT JOIN h ON (h.host_id = l.host_id);

运行命令,生成维度表:

D select table_catalog, table_schema,table_name, table_type from information_schema.tables where table_schema='dim__dev';
┌───────────────┬──────────────┬───────────────────────┬────────────┐
│ table_catalog │ table_schema │      table_name       │ table_type │
│    varchar    │   varchar    │        varchar        │  varchar   │
├───────────────┼──────────────┼───────────────────────┼────────────┤
│ dw            │ dim__dev     │ dim_hosts_cleansed    │ VIEW       │
│ dw            │ dim__dev     │ dim_listings_cleansed │ VIEW       │
│ dw            │ dim__dev     │ dim_listings_w_hosts  │ VIEW       │
└───────────────┴──────────────┴───────────────────────┴────────────┘

事实模型

Fact 模型会在 models/fct 文件夹内创建增量型 Fact 模型:
Fact 模型 fct.reviews 会处理并汇总来自源模型的评论数据。这是一个增量型模型,意味着它只会加载新数据,这极大地减少了每次模型运行所需的计算资源。在模型中,@start 和 @end_date 是 SQLMesh 宏,在 sqlmesh 计划或运行期间会根据运行的适当开始和结束日期进行渲染。此外,@GENERATE_SURROGATE_KEY 宏用于根据给定的输入列生成 MD5 哈希值,为数据生成一个替代键。

MODEL (name fct.reviews,kind INCREMENTAL_BY_TIME_RANGE (time_column review_date)
);WITH src_reviews AS (SELECT * FROM SOURCE.SRC_REVIEWS
)
SELECT@GENERATE_SURROGATE_KEY(listing_id, review_date, reviewer_name, review_text) AS review_id,*
FROM src_reviews
WHERE review_text IS NOT NULLAND review_date BETWEEN @start_date AND @end_date;

运行命令,生成事实表:

D select table_catalog, table_schema,table_name, table_type from information_schema.tables where table_schema='fct__dev';
┌───────────────┬──────────────┬────────────┬────────────┐
│ table_catalog │ table_schema │ table_name │ table_type │
│    varcharvarcharvarcharvarchar   │
├───────────────┼──────────────┼────────────┼────────────┤
│ dw            │ fct__dev     │ reviews    │ VIEW       │
└───────────────┴──────────────┴────────────┴────────────┘

业务层模型

转到业务层,我们需要分析满月日期如何影响评审意见。为此,我们需要一个包含满月日期的表。这可以使用SQLMesh中的种子文件来实现。从提供的链接下载种子文件,并将其放在SQLMesh项目的种子文件夹中。然后,创建一个名为full_moon_dates_seed.sql 的种子模型。

MODEL (name seed.full_moon_dates,kind SEED (path '../seeds/seed_full_moon_dates.csv')
);

运行命令,生成seed日期模型:

D select table_catalog, table_schema,table_name, table_type from information_schema.tables where table_schema='seed__dev';
┌───────────────┬──────────────┬─────────────────┬────────────┐
│ table_catalog │ table_schema │   table_name    │ table_type │
│    varcharvarcharvarcharvarchar   │
├───────────────┼──────────────┼─────────────────┼────────────┤
│ dw            │ seed__dev    │ full_moon_dates │ VIEW       │
└───────────────┴──────────────┴─────────────────┴────────────┘

对于最终的模型,创建名为models/mart的文件夹,并在其中添加以下模型:

MODEL (name mart.mart_fullmoon_reviews,kind full
);WITH fct_reviews AS (SELECT * FROM fct.reviews
),
full_moon_dates AS (SELECT * FROM seed.full_moon_dates
)SELECTr.*,CASEWHEN fm.full_moon_date IS NULL THEN 'not full moon'ELSE 'full moon'END AS is_full_moon
FROMfct_reviews as rLEFT JOIN full_moon_dates as fmON ( r.review_date = DATE_ADD(strptime(fm.full_moon_date, '%Y-%m-%d'), INTERVAL 1 DAY) )

运行命令,生成模型:

D select table_catalog, table_schema,table_name, table_type from information_schema.tables where table_schema='mart__dev';
┌───────────────┬──────────────┬───────────────────────┬────────────┐
│ table_catalog │ table_schema │      table_name       │ table_type │
│    varcharvarcharvarcharvarchar   │
├───────────────┼──────────────┼───────────────────────┼────────────┤
│ dw            │ mart__dev    │ mart_fullmoon_reviews │ VIEW       │
└───────────────┴──────────────┴───────────────────────┴────────────┘

一旦所有的模型都创建好了,项目结构应该是这样的:

在这里插入图片描述

在开发模式下测试成功后,我们在生产模式下运行sqlmesh计划:

sqlmesh plan prod

输出结果:

 sqlmesh plan prod`prod` environment will be initializedModels:
└── Added:├── dim.dim_hosts_cleansed├── dim.dim_listings_cleansed├── dim.dim_listings_w_hosts├── fct.reviews├── mart.mart_fullmoon_reviews├── seed.full_moon_dates├── src.src_hosts├── src.src_listings└── src.src_reviews
Apply - Virtual Update [y/n]: 

选择y,sqlmesh会自动创建生产环境所需的模型,SQLMesh不会像在开发环境中那样重新处理所有数据。相反,它重用在开发环境中创建的模型。有关SQLMesh虚拟环境的更多信息,请参阅此链接。

最后通过命令sqlmesh ui 启动web开发页面,图示如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/72826.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单片机写的小液晶屏驱动+汉字滚屏

单片机写的小液晶屏驱动汉字滚屏 stm32f401freertos内置HZK16 单片机汉字滚屏

【Golang那些事】go1.22和1.23 更新重点及测评

好久没有写文章了,攒了一年的Golang版本特性的技术点以及踩过的坑,那就在新年第一篇的文章中做一个总结吧: 一、关于迭代器 (一)迭代器去掉了共享共享内存 一个经典的面试题 说到Golang经典的面试题,大家可能都刷到过很多&…

【大模型实战篇】使用GPTQ量化QwQ-32B微调后的推理模型

1. 量化背景 之所以做量化,就是希望在现有的硬件条件下,提升性能。量化能将模型权重从高精度(如FP32)转换为低精度(如INT8/FP16),内存占用可减少50%~75%。低精度运算(如INT8&#xf…

【MySQL】架构

MySQL架构 和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实…

国内首台太空采矿机器人亮相,宇宙资源开发迈入新阶段

随着地球资源的日益枯竭,人类将目光投向了浩瀚的宇宙。太空采矿作为一项前沿科技,正逐步从科幻走向现实。近日,中国矿业大学成功研制出国内首台太空采矿机器人,标志着我国在太空资源开发领域迈出了重要一步。 太空采矿并非新鲜概念…

Kubeasz工具快速部署K8Sv1.27版本集群(二进制方式)

文章目录 一、基本信息二、服务器初始化操作三、使用Kubeasz部署K8S集群四、验证集群 一、基本信息 1、部署需要满足前提条件: 注意1:确保各节点时区设置一致、时间同步;注意2:确保在干净的系统上开始安装;注意3&…

Java 文件和IO流基础(生动形象版)

系列文章目录 Java文件和IO流基础部分 文件VSIO流 文章目录 系列文章目录前言一、文件的定义和理解: 1.专业定义: 2.文件系统和路径: 二、IO流的定义和分类 1.定义:2.流的分类:修饰器模式的核心作用:基础结…

Linux驱动学习笔记(四)

高级字符设备进阶 1.一个完整的IO过程包含以下几个步骤:1应用程序向操作系统发起IO调用请求(系统调用);2操作系统准备数据,把IO设备的数据加载到内核缓冲区;3操作系统拷贝数据,把内核缓冲区的数据从内核空间拷贝到应用…

2025年,电脑还需要分区吗?

随着2025年的到来,电脑存储空间已经不像以前那么金贵,固态硬盘(SSD)容量更大、速度更快,云存储也成了日常标配。许多人开始质疑:电脑还需要像以前那样分区吗? 一、分区到底是什么意思&#xff…

Springboot项目集成maven-assembly-plugin进行打包

通常我们将应用部署到服务器的某个目录下,一般情况下我们会提供像target(存放应用jar包),bin(项目启动/停止脚本),config(项目配置文件),logs(项目…

鸿蒙NEXT项目实战-百得知识库01

代码仓地址,大家记得点个star IbestKnowTeach: 百得知识库基于鸿蒙NEXT稳定版实现的一款企业级开发项目案例。 本案例涉及到多个鸿蒙相关技术知识点: 1、布局 2、配置文件 3、组件的封装和使用 4、路由的使用 5、请求响应拦截器的封装 6、位置服务 7、三…

【DeepSeek应用】本地部署deepseek模型后,如何在vscode中调用该模型进行代码撰写,检视和优化?

若已成功在本地部署了 DeepSeek 模型(例如通过 vscode-llm、ollama 或私有 API 服务),在 VS Code 中调用本地模型进行代码撰写、检视和优化的完整流程如下: 1. 准备工作:确认本地模型服务状态 模型服务类型: 若使用 HTTP API 服务(如 FastAPI/Flask 封装),假设服务地址…

jenkins 配置邮件问题整理

版本:Jenkins 2.492.1 插件: A.jenkins自带的, B.安装功能强大的插件 配置流程: 1. jenkins->系统配置->Jenkins Location 此处的”系统管理员邮件地址“,是配置之后发件人的email。 2.配置系统自带的邮件A…

Android Coil3阶梯preload批量Bitmap拼接扁平宽图,Kotlin

Android Coil3阶梯preload批量Bitmap拼接扁平宽图&#xff0c;Kotlin <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE" /><uses-p…

C++基础 [八] - list的使用与模拟实现

目录 list的介绍 List的迭代器失效问题 List中sort的效率测试 list 容器的模拟实现思想 模块分析 作用分析 list_node类设计 list 的迭代器类设计 迭代器类--存在的意义 迭代器类--模拟实现 模板参数 和 成员变量 构造函数 * 运算符的重载 运算符的重载 -- 运…

【系统架构设计师】操作系统 - 特殊操作系统 ③ ( 微内核操作系统 | 单体内核 操作系统 | 内核态 | 用户态 | 单体内核 与 微内核 对比 )

文章目录 一、微内核操作系统1、单体内核 操作系统2、微内核操作系统 引入3、微内核操作系统 概念4、微内核操作系统 案例 二、单体内核 与 微内核 对比1、功能对比2、单体内核 优缺点3、微内核 优缺点 一、微内核操作系统 1、单体内核 操作系统 单体内核 操作系统 工作状态 : …

系统思考:恶性循环

去年&#xff0c;我给一家知名人力资源公司交付了两个项目——一个在6月&#xff0c;另一个在8月&#xff0c;至今半年多了依然没有收到课酬。催促多次&#xff0c;得到的答复却各式各样&#xff1a;销售说老板卡了额度&#xff0c;老板说具体情况还需了解。每一次的推诿&#…

基于springboot的房屋租赁系统(008)

摘 要 社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个用户的使用。互联网具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本低等优点。 因此&#xff0c;构建符…

视频翻译器免费哪个好?轻松玩转视频直播翻译

你是不是觉得看外语视频很麻烦&#xff1f;每次遇到喜欢的外语电影、电视剧或动漫&#xff0c;总是要等字幕组的翻译&#xff0c;或者因为语言不通而错过精彩的情节。 这个时候&#xff0c;掌握多语种直播翻译方案就显得尤为重要&#xff0c;有了实时字幕&#xff0c;看外语视…

在cherry studio中使用MCP——本地文件管理FileSystem

cherry studio是一款开源的AI助手工具&#xff0c;可以便捷地利用API访问各种LLM&#xff0c;有关cherry studio的使用这里不再多说&#xff0c;可以参考这篇文章https://blog.csdn.net/m0_65494437/article/details/145478823 官网&#xff1a;https://cherry-ai.com/ MCP是什…