- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 ID 列,并且我正在寻找每次特定项目出现在我的 Geography
列中时增加 ID 的方法(ItalyZ
、ItalyM
、UKY
或 UKM
)已找到。
ItalyZ
的ID从0开始,到4000结束。
ItalyB
的ID从4000开始到8000结束。
UKY
的ID从0开始,到4000结束。
UKM
的ID从4000开始到8000结束。
但是,我正在刷新我的文件,因此我会时不时地收到新的“地理位置”,但没有来源或第一个 ID。这些边界/范围仅是已知的开始和结束。
这是我的数据示例:
|---------------------|------------------|
| ID | Geography |
|---------------------|------------------|
| AB0000 | ItalyZ |
|---------------------|------------------|
| AB4041 | ItalyB |
|---------------------|------------------|
| BC0000 | UKY |
|---------------------|------------------|
| BC4001 | UKM |
|---------------------|------------------|
| NULL | ItalyZ |
|---------------------|------------------|
| NULL | ItalyZ |
|---------------------|------------------|
| NULL | UKY |
|---------------------|------------------|
| NULL | UKM |
|---------------------|------------------|
这是我的预期输出:
|---------------------|------------------|
| ID | Geography |
|---------------------|------------------|
| AB0000 | ItalyZ |
|---------------------|------------------|
| AB4041 | ItalyB |
|---------------------|------------------|
| BC0000 | UKY |
|---------------------|------------------|
| BC4001 | UKM |
|---------------------|------------------|
| AB0001 | ItalyZ |
|---------------------|------------------|
| AB0001 | ItalyZ |
|---------------------|------------------|
| AB4042 | UKY |
|---------------------|------------------|
| BC0001 | UKM |
|---------------------|------------------|
我一直在尝试多种方法并尝试适应运行整体解决方案。我还尝试将我的文件分成四个不同的文件,以免 If 函数在不同情况之间交替,从而使其更简单,就像我的强力查询中的这样:
#"Added Custom2" = Table.AddColumn(#"Reordered Columns", "Sum", each if [Geography] = "UKM" then [Number AB range below 4000] + 1
else if [Geography] = "UKY" then [Number AB range above 4000] + 1
else if [Geography] = "ItalyB" then [Number BC range above 5000]
else [Number BC range below 5000] + 1)
但绝对没有任何效果。这令人抓狂。
最佳答案
我将回答一个进一步简化的问题,因为我不想解决 ID
字母前缀。
假设我们有下表(我已包含:
ID, Group
-----------
0, A
1, A
300, B
525, C
null, A
null, B
null, B
null, C
并想生成一个新列NewID
将取代 ID
.
ID, Group, NewID
------------------
0, A, 0
1, A, 1
300, B, 300
525, C, 525
null, A, 2
null, B, 301
null, B, 302
null, C, 526
这是一个使用 Table.AddIndexColumn
的方法:
let
Source = <First Table Above>,
#"Grouped Rows" = Table.Group(Source, {"Group"}, {{"ID", each List.Max([ID]), type number}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", (C) => Table.AddIndexColumn(Table.SelectRows(Source, each _[Group] = C[Group]),"NewID",C[ID],1)),
#"Expanded Custom" = Table.ExpandTableColumn(#"Added Custom", "Custom", {"NewID"}, {"NewID"}),
#"Removed Columns" = Table.RemoveColumns(#"Expanded Custom",{"ID"})
in
#"Removed Columns"
首先,我们按Group
分组找到最大值ID
每Group
:
然后我们添加一个新列,其中该列中的每一行都是一个表,通过将原始表过滤到当前组然后添加从最大值 ID
开始的索引列来定义。我们刚刚发现。这是最复杂的步骤。
从这里,我们扩展 Custom
表列(选择我们还没有的列)并删除旧的 ID
柱子。现在我们需要减少我们选择执行的任何排序或列类型。
编辑:我在上面犯了一个错误。请注意 NewID
对于 Group
A是1,2,3
而不是0,1,2
我一直在努力。
要解决这个简单示例的问题,您可以使用 List.Min
而不是List.Max
在分组中一步一步。
对于更复杂的示例,您可能需要向源表添加索引列,以便在扩展后合并回源表,并且仅使用新的 NewID
对于先前为空 ID
值,因为我们不能保证它们是连续的。
代码如下:
let
Source = <First Table Above>,
#"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1),
#"Grouped Rows" = Table.Group(#"Added Index", {"Group"}, {{"ID", each List.Max([ID]), type number}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", (C) => Table.AddIndexColumn(Table.SelectRows(Table.Sort(#"Added Index",{"ID"}), each _[Group] = C[Group]),"NewID",C[ID]+1,1)),
#"Expanded Custom" = Table.ExpandTableColumn(#"Added Custom", "Custom", {"Index", "NewID"}, {"Index", "NewID"}),
#"Merged Queries" = Table.NestedJoin(#"Added Index", {"Index"}, #"Expanded Custom", {"Index"}, "Expanded Custom", JoinKind.LeftOuter),
#"Expanded Expanded Custom" = Table.ExpandTableColumn(#"Merged Queries", "Expanded Custom", {"NewID"}, {"NewID"}),
#"Added Custom1" = Table.AddColumn(#"Expanded Expanded Custom", "ReplaceID", each if [ID] = null then [NewID] else [ID]),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"ID", "NewID"})
in
#"Removed Columns"
复杂的步骤稍微改变一下:
(C) => Table.AddIndexColumn(
Table.SelectRows(
Table.Sort(#"Added Index", {"ID"}),
each _[Group] = C[Group]
),
"NewID", C[ID] + 1, 1
)
不同之处在于我们需要添加排序,以便空值出现在所有已分配的 ID
之后。值并开始在 C[ID] + 1
处对空值建立索引而不仅仅是C[ID]
.
这是一个步骤较少(没有分组依据、展开或合并)但功能更复杂的版本:
let
Source = <First Table Above>,
#"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1),
#"Added Custom" = Table.AddColumn(#"Added Index", "Custom", (C) => Table.SelectRows(#"Added Index", each _[Group] = C[Group])),
#"Added NewID" = Table.AddColumn(#"Added Custom", "NewID", (C) => if C[ID] = null then Table.SelectRows(Table.AddIndexColumn(Table.SelectRows(C[Custom], each _[ID] = null), "NewID", List.Max(C[Custom][ID])+1,1), each _[Index] = C[Index]){0}[NewID] else C[ID]),
#"Removed Columns" = Table.RemoveColumns(#"Added NewID",{"Custom"})
in
#"Removed Columns"
第一个添加Custom
列只是过滤到当前 Group
的索引源表。然后我们添加NewID
列定义为:
(从内到外阅读。)
(C) =>
if C[ID] = null
then Table.SelectRows(
Table.AddIndexColumn(
Table.SelectRows(C[Custom], each _[ID] = null),
"NewID", List.Max(C[Custom][ID]) + 1, 1
),
each _[Index] = C[Index]
){0}[NewID]
else C[ID]
与之前类似,我们取组子表Custom
,只需选择 null ID
行并从最大非空 ID
开始索引它们加一。这仍然给我们留下了一个表,所以我们只想要这个子表中与 Index
相对应的行。从整个表。我们使用{0}[NewID]
从 [NewID]
中表格第一(唯一)行的单元格中提取值柱子。对于非空 ID
值,else 子句只是让它们保持原样。
关于if-statement - 电源查询: how to add one to a column when a specific values appear in an other column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61488154/
我正在 sitepoint 上阅读一篇文章 - http://www.sitepoint.com/how-to-create-mysql-events/关于mysql事件的主题,当你可以安排时我遇到了
我想为用户预订一个特定的时间(开始时间和结束时间),其他人不能在同一时间预订。例如:John预约了一个月5号7点到8点的时间,我想没有其他人可以在同一时间和日期预订。我想查一下时段,因为如果像John
I want to book a specific time for the user (start hour and end hour ) and no one else can book a
我已经克隆了 linux 内核 git 仓库: git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 我
我正在尝试获取下面突出显示的文本“frei ab 01.05.2017”。然而问题是,“section_content iw_right”类在该网站上出现了 19 次。我会执行 find_all 并仅
我尝试找到这个问题,但所有其他问题都与我的问题无关。 我的问题:我有类似 0xFreeFoodU 的东西,我必须获得特定的位置,然后翻转它们或将它们设为 1 或 0。 例如,位置 2、6、10、14、
我正在尝试创建一个登录功能,该功能允许我指定要从中选择数据的表以及要选择的字段。我已设法将表值传递给函数,并从所需的表中选择数据,但我的表有不同的字段。如何在查询中指定它是一个表选择: user_id
我是 Rails 的新手,在获取布局(用作唯一的静态登录页面)来加载我想与之关联的特定样式表时遇到了问题。例如:www.landing.com 加载landing.scss.erb . 作为背景,所有
我不明白为什么这两个示例的行为不同。 HTML 和 CSS 的目的只是简单地水平对齐 div,并让最后一个 div(向右)占据剩余空间(容器的剩余宽度)。 为正确的元素使用特定的 id: #left
我是 postfix 的新手。如何使用限制类或其他方法将特定用户的特定域列入黑名单。 假设我的机器有两个用户 - user1 和 user2。 我想将abc.com 到user1@mydomain 的
当记事本是 .txt 文件的默认程序时,我如何告诉 Windows 在写字板中打开 C:\test\test.txt? 最佳答案 接受的答案对我不起作用。我不确定这是因为我试图运行的程序,还是因为路径
对于下面的代码示例,我需要检查一个 tr ,type="a"并且有一个带有文本“3”作为 child 的 td ,是否存在: 1 1
var s = '-10px -10px'; var n = '33px'; 我需要一个产生这个结果的正则表达式:'-10px 33px' 类似于:s.replace(???, n) 最佳答案 如果您
一个项目 table: items 有许多分类法 table: taxonomies 使用连接表 item_taxonomies (item_id, taxonomy_id)。 使用分类组搜索项目。
h:panelGrid 表有 2 列。 这是必需的,第一列为整个表格宽度的 30%,第二列为整个表格宽度的 70%。 这种情况有一些配置吗?看起来 columnClasses 属性应用于所有列, 并且
特定阶段仅在特定计算机上卡在队列中 显示队列中的位置:1,但无法连接到代理,即使没有其他作业正在运行且队列为空 所有其他阶段都工作正常 故障阶段在不同的机器上工作正常 代理已在线并已启用 我们所有的代
我正在使用 CakePHP 3.3.10。我需要将 JavaScript 文件添加到特定 View 。 // default.ctp // I need to remove this script
首先,我发现提出问题很困难,欢迎反馈。 我必须制作一个机器学习代理来玩点和盒子。 我还处于早期阶段,但提出了一个问题:如果我让我的机器学习代理(具有特定的实现)与它自身的副本进行对抗来学习和改进它的游
我是开发 iOS 应用程序的新手,英语不是我的母语,所以请原谅我的任何错误和丑陋的代码。 我尝试创建的应用程序应该只在特定的一天显示一张特定的图像(如果日期更改,则更改图像)。因此我实现了一个检查日期
我写了一些函数,并编译成一个dll模块。在我的头文件中如下: #ifndef GET_DATAFEED_FORKDB_H #define GET_DATAFEED_FORKDB_H #include
我是一名优秀的程序员,十分优秀!