小编Bry*_*ant的帖子

创建自定义的多参数Oracle分析函数

背景

我知道在Oracle中,可以创建自定义聚合函数来处理值集合并返回单个结果.编辑:我甚至阅读了docs.oracle.com/cd/B28359_01/appdev.111/b28425/aggr_functions.htm上的友好手册!

我还知道Oracle提供了类似和的内置分析函数,它们为每个输入提供相对于输入值的集合/窗口的值.DENSE_RANKRATIO_TO_REPORT

问题

我想知道的是,是否有一种方法可以创建我自己的分析函数,可能与我可以创建自己的聚合函数的方式相似,特别是在我的自定义分析函数中创建一个带有附加参数的函数.

微妙的术语警告

当我提到"分析函数"时,请将其读作一个函数,除了通过PARTITION关键字接受窗口参数外,还可以在给定窗口内返回不同的值.(如果有人有更好的术语,请告诉我!纯粹的分析功能?DENSE_RANK- 分析功能?非聚合分析功能?)

Oracle文档指出聚合函数可以用作分析(窗口)函数.不幸的是,这仅意味着PARTITION用于在分析函数中指定窗口的关键字也可以应用于聚合函数.它不会将聚合函数提升到我能够在固定窗口内返回不同值的令人垂涎的状态.

聚合用作分析:

SELECT SUM(income) OVER (PARTITION BY first_initial) AS total FROM data;
Run Code Online (Sandbox Code Playgroud)

将拥有尽可能多的记录data,但它只有与total第一个首字母一样多的不同s.

分析用作分析:

SELECT RATIO_TO_REPORT(income) OVER (PARTITION BY first_initial) AS ratio FROM data;
Run Code Online (Sandbox Code Playgroud)

将拥有尽可能多的记录data,即使在给定的first_initial分区内,这些记录ratio也可能是不同的.

上下文

我已经提供了对PL/SQL过程的只调用访问,该过程接受数字集合作为IN OUT参数,并且具有一些其他IN配置参数.该过程以受配置参数影响的方式修改集合的值(将其视为"大学专有制裁和所需等级弯曲程序").

目前,使用该过程的过程是硬编码检测从一个数据分区到另一个数据分区的变化的游标循环,然后在每个分区内将数据提取到一个集合中,然后将该集合传递给过程,更改并最终转出进入一个单独的表.我计划通过创建一个PIPELINED PARALLEL_ENABLE封装了一些逻辑的表函数来改进这个,但我更喜欢启用如下的查询:

SELECT G.Course_ID
     , G.Student_ID
     , G.Raw_Grade
     , analytic_wrapper(G.raw_grade, P.course_config_data) …
Run Code Online (Sandbox Code Playgroud)

oracle customization plsql analytic-functions oracle11g

6
推荐指数
1
解决办法
1909
查看次数

使用用户指定的 HTML 和纯文本正文以编程方式发布 Gmail 草稿

我正在使用 Gmail API 在 Python 中自动创建 Gmail 草稿。我需要创建 HTML 格式的电子邮件,但我个人也需要创建纯文本回退,因为这是正确的做法。

我以为我已经完成了上述所有工作,直到我尝试使纯文本后备与 HTML 略有不同。似乎谷歌自己为我创建了明文后备,而不是使用我提供的,所以如果我的 html body is<HTML><BODY>HTML Body</BODY></HTML>和我的明文 body is Plaintext body,最终的明文正文将是HTML Body,丢弃我提供的明文。

我的问题:有没有人知道让 Gmail API 使用提供的明文而不是自动生成回退的方法?

我注意到的一个相关项目:如果我以不同的顺序附加 HTML 和纯文本正文,则会发生相反的情况 - GMail 将根据我的纯文本自动生成 HTML 正文。所以它似乎只关注最后一个附着的身体。

我正在使用的代码的精简版:

import base64
import os
import httplib2
import oauth2client
from oauth2client import client
from oauth2client import tools
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from pathlib import Path
from apiclient import errors
from apiclient import discovery

SCOPES …
Run Code Online (Sandbox Code Playgroud)

python mime-message gmail-api

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