小编mav*_*ckz的帖子

Protocol buffer/JSON 架构到 SQL DDL

我们使用protocol buffers(protobuf) 在内部定义我们的模式,并让翻译器转换为各种其他内部表示形式,例如 JSON Schema(Protobuf 到 JSON 模式转换器),以便让 protobuf 模式成为事实来源。

我们还计划从 protobuf 模式创建 SQL DDL,但找不到可靠且支持良好的转换器。我们发现的一些工具(例如jsonutils)似乎并不活跃。

SQL 到 protobuf 生成器很多(示例: https: //github.com/jackskj/protoc-gen-map/)

我们需要一个简单的转换器来将 protobuf 模式转换为CREATE有关 protobuf 模式创建的语句,以及ALTER在 SnowSQL 中将新列添加到 protobuf 模式时的潜在语句(我们不支持更改字段类型或删除 protobuf 模式中的字段)。嵌套消息可以存储为variant且不必展平。是否有任何工具,或者我们应该为此编写一个自定义工具?

message Foo {
  string uuid = 1;
  MessageType1 message_type1 = 2;
  MessageType2 message_type2 = 3;
  google.protobuf.Timestamp updated_at = 4;
  float some_num = 5;
}
Run Code Online (Sandbox Code Playgroud)

被翻译成

CREATE TABLE FOO (
    uuid string,
    message_type1 variant,
    message_type2 variant, …
Run Code Online (Sandbox Code Playgroud)

python jsonschema protocol-buffers snowflake-schema snowflake-cloud-data-platform

6
推荐指数
0
解决办法
2166
查看次数

求n叉树中最大非相邻和的算法

给定一个整数 n 叉树,任务是找到子序列的最大和,其约束是序列中的 2 个数字不应共享树中的公共边。示例: 1 / \ 2 5 / \ 3 4 最大非相邻和 = 3 + 4 + 5 = 12 以下是http://www.geeksforgeeks.org/maximum-sum-such-中概述的算法的错误扩展没有两个元素相邻?

def max_sum(node, inc_sum, exc_sum):
    for child in node.children:
        exc_new = max(inc_sum, exc_sum)
        inc_sum = exc_sum + child.val
        exc_sum = exc_new
        inc_sum, exc_sum = max(max_sum(child, inc_sum, exc_sum),
                               max_sum(child, inc_sum, inc_sum - node.val))
    return exc_sum, inc_sum
Run Code Online (Sandbox Code Playgroud)

但我不确定返回时交换 exc_sum 和 inc_sum 是否是实现结果的正确方法,以及如何跟踪可能导致最大总和的可能总和,在本例中,左子树中的最大总和是(1+3+4),而导致最终最大值的总和是(3+4+5),那么应该如何跟踪(3+4)呢?是否应该将所有中间金额存储在表中?

algorithm tree dynamic-programming maximize

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

为什么S == S [:: - 1]比循环更快?

为什么检测字符串S是否为回文的pythonic方法S == S[::-1]- 比下面的实现更快?

i = 0
j = len(S) - 1
while i < j:
    if S[i] != S[j]:
        return False
    i += 1
    j -= 1
return True
Run Code Online (Sandbox Code Playgroud)

python string performance palindrome

2
推荐指数
1
解决办法
96
查看次数