我有一个包含表格的 markdown 文件,还有另一个 dbt schema.yml 文件,用于提供和生成文档。传统上,我在 schema.yml 中输入表名和列名以及列名的描述,但现在我想我想将 md 文档中的列名引用到 yaml 文件中,而不是手动输入。
这就是我的doc.md文件的样子
{% docs column_description %}
| COLUMN\_NAME | DESCRIPTION |
| ------------------------------ | ------------------------------------------------------------------------- |
| cycle\_id | Customer cycle\_id(todays start sleep time to next days start sleep time) |
| user\_id | Customers user\_id |
| yes\_alcohol | User consumed alcohol or not |
| blank\_alcohol | User did not answer or user answered "No" |
{% enddocs %}
Run Code Online (Sandbox Code Playgroud)
目前,这就是我的 schema.yml 文件的样子
version: 2
models: …Run Code Online (Sandbox Code Playgroud) 给定一个包含 20 列的表,我当前的模型已经将所有记录插入到表中。不过,我想将增量更新专门集中在几个专栏上。
例如,给出下表模型。当新值可用时,我想仅使用新值增量更新 C 列,而不是删除并重新插入整行,这从索引/性能角度来看成本更高。
现存的:
| ID | 乙 | C |
|---|---|---|
| n1 | X | 1 |
| n2 | 是 | 2 |
| n3 | Z | 3 |
新的:
| ID | 乙 | C |
|---|---|---|
| n1 | X | 1.2 |
| n2 | 是 | 2.1 |
| n3 | Z | 3.5 |
为了使脚本尽可能灵活,我尝试自动引用路径中的用户名,即Admin在"C:/Users/Admin".
Rbase为Sys.info()我提供了我正在寻找的信息:
sysname | release | version | nodename | machine | login
"Windows" | "7 x64" | "build 7601, Service Pack 1" | "WINDOWS MACHINE" | "x86-64" | "Admin"
Run Code Online (Sandbox Code Playgroud)
但到目前为止,我无法将其作为任何类型的变量/字符串来执行操作。
谢谢。
根据 jinja 文档,and流else if中的情况存在一个标签:Jinja Control Structures/IFifelse
正在寻找一种在 dbt 宏中执行此操作的方法,例如:
my_macro.sql
-- macros/my_macro.sql
{% macro my_macro() %}
{% if target.name == 'default' %}
select 'A' as my_letter;
{% elif target.name == 'dev' %}
select 'B' as my_letter;
{% elif target.name == 'qa' %}
select 'C' as my_letter;
{% elif target.name == 'prod' %}
select 'D' as my_letter;
{% else %}
select 1; -- hooks will error if they don't have valid SQL in them, this handles …Run Code Online (Sandbox Code Playgroud) 给定一个包含因子列 (X1) 和小计列 (X2) 的数据集
X1 X2
1 1 12
2 2 200
3 3 23
4 4 86
5 5 141
Run Code Online (Sandbox Code Playgroud)
我想创建一个这样的图形:
这给出了 x2 占 X2 总数的百分比,除以 X1。
编辑:清晰度和添加数据集的可重复性
我曾经scales把矢量格式化为percentage格式,并且大部分都成功地运行了逻辑操作,但是,我注意到一些有趣的行为超过两位数百分比,我想知道是否有人可以解释这个,所以我可以避免这些情况.
示例向量:
library(scales)
x <- c(.2,.4,.6,.8,1.2,2.0,2.5,5.1)
> percent(x)
[1] "20%" "40%" "60%" "80%" "120%" "200%" "250%" "510%"
percent(x) < percent(c(.5))
[1] TRUE TRUE FALSE FALSE TRUE TRUE TRUE FALSE
Run Code Online (Sandbox Code Playgroud)
如您所见,低于100%的值被正确识别为少于或不少于50%.但是,这对100-499%之间的值不起作用.
到底发生了什么?