小编Jon*_*han的帖子

如何在airflow中记录sql执行结果?

我使用airflow python 运算符对 redshift/postgres 数据库执行 sql 查询。为了进行调试,我希望 DAG 返回 sql 执行的结果,类似于在控制台本地执行时看到的结果:

我用来psycop2创建连接/游标并执行 sql。记录下来对于确认解析的参数化 SQL 以及确认数据确实已插入非常有帮助(我曾经痛苦地经历过环境差异导致意外行为的问题)

我对气流或 python DBAPI 的低级工作原理没有深入的了解,但文档pscyopg2似乎确实提到了一些可能允许这样做的方法和连接配置。

我发现非常令人困惑的是,这很难做到,因为我想象这将是在此平台上运行 ETL 的主要用例。我听说过简单地创建额外的任务来查询表之前和之后的建议,但这似乎笨拙且无效。

谁能解释一下这如何可能,如果不可能,请解释为什么?欢迎实现类似结果的替代方法。谢谢!

到目前为止我已经尝试过该connection.status_message()方法,但它似乎只返回sql的第一行而不是结果。我还尝试创建一个日志游标,它生成 sql,但不生成控制台结果

import logging
import psycopg2 as pg
from psycopg2.extras import LoggingConnection

conn = pg.connect(
    connection_factory=LoggingConnection,
    ...
)
conn.autocommit = True

logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.addHandler(logging.StreamHandler(sys.stdout))
conn.initialize(logger)

cur = conn.cursor()

sql = """    
    INSERT INTO mytable (
    SELECT *
    FROM other_table
    );
"""

cur.execute(sql)
Run Code Online (Sandbox Code Playgroud)

我希望记录器返回类似以下内容:

sql> INSERT INTO mytable (
     SELECT …
Run Code Online (Sandbox Code Playgroud)

psycopg2 airflow

5
推荐指数
1
解决办法
4500
查看次数

如何为ggplot2地图增加连续颜色填充的数量

我使用ggplot2在R中创建地图相对较新,但是我已经在这个问题上苦苦挣扎了几天.我创建了我的情节,但似乎无法增加用于将颜色映射到我的值的容器数量.

这是一个问题,因为地图不能很好地显示数据的变化.我不确定我是否正确接近这个问题.

这是我的代码:

region=c('alaska','alabama','arkansas','arizona','california','colorado','connecticut','florida','georgia','hawaii','iowa','idaho','illinois','indiana','kansas','kentucky','louisiana','massachusetts','maryland','maine','michigan','minnesota','missouri','mississippi','montana','north carolina','north dakota','nebraska','new hampshire','new jersey','new mexico','nevada','new york','ohio','oregon','pennsylvania','south carolina','south dakota','tennessee','texas','utah','virginia','vermont','washington','wisconsin','west virginia','oklahoma','wyoming')

sales=c(46,1240,471,2292,13427,1574,261,10036,826,1508,184,939,2356,1329,434,271,714,208,2027,21,950,500,1871,147,249,1204,69,175,369,1968,606,656,2369,2422,525,2902,1709,126,1563,12046,931,2271,46,2260,250,122,0,0)

state_data = as.data.frame(cbind(region,sales))

library(ggplot2)
library(maps)
all_states <- map_data("state")

D = merge(all_states, state_data, by = "region")
D = D[with(D,order(D$group,D$order)),] 

p = ggplot()
p = p + geom_polygon( data=D, aes(x=long, y=lat, group = group, fill=D$sales),colour="white" )
p = p + xlab("")
p = p + ylab("")
p = p + labs(title = "sales")
p = p + guides(color=FALSE) 
p = p + guides(size=FALSE) 
p = p + guides(fill=guide_legend() …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

4
推荐指数
1
解决办法
1439
查看次数

标签 统计

airflow ×1

ggplot2 ×1

psycopg2 ×1

r ×1