Skip to content

Commit dfed824

Browse files
davidwzhaoclaude
andcommitted
Add transaction_output_name alternative to export_csv_config_v2
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent b8064ee commit dfed824

2 files changed

Lines changed: 44 additions & 6 deletions

File tree

meta/src/meta/grammar.y

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@
115115
%nonterm export_csv_column transactions.ExportCSVColumn
116116
%nonterm export_csv_columns_list Sequence[transactions.ExportCSVColumn]
117117
%nonterm export_csv_config transactions.ExportCSVConfig
118+
%nonterm export_csv_output_location Tuple[String, String]
118119
%nonterm export_csv_path String
119120
%nonterm export_csv_source transactions.ExportCSVSource
120121
%nonterm export_iceberg_config transactions.ExportIcebergConfig
@@ -1331,10 +1332,10 @@ export
13311332
$3: transactions.ExportIcebergConfig = $$.iceberg_config
13321333

13331334
export_csv_config
1334-
: "(" "export_csv_config_v2" export_csv_path export_csv_source csv_config ")"
1335-
construct: $$ = construct_export_csv_config_with_source($3, $4, $5)
1335+
: "(" "export_csv_config_v2" export_csv_output_location export_csv_source csv_config ")"
1336+
construct: $$ = construct_export_csv_config_with_location($3, $4, $5)
13361337
deconstruct if builtin.length($$.data_columns) == 0:
1337-
$3: String = $$.path
1338+
$3: Tuple[String, String] = deconstruct_export_csv_output_location($$)
13381339
$4: transactions.ExportCSVSource = $$.csv_source
13391340
$5: logic.CSVConfig = $$.csv_config
13401341
| "(" "export_csv_config" export_csv_path export_csv_columns_list config_dict ")"
@@ -1344,6 +1345,16 @@ export_csv_config
13441345
$4: Sequence[transactions.ExportCSVColumn] = $$.data_columns
13451346
$5: Sequence[Tuple[String, logic.Value]] = deconstruct_export_csv_config($$)
13461347

1348+
export_csv_output_location
1349+
: "(" "path" STRING ")"
1350+
construct: $$ = builtin.tuple($3, "")
1351+
deconstruct if $$[0] != "":
1352+
$3: String = $$[0]
1353+
| "(" "transaction_output_name" name ")"
1354+
construct: $$ = builtin.tuple("", $3)
1355+
deconstruct if $$[1] != "":
1356+
$3: String = $$[1]
1357+
13471358
export_csv_path
13481359
: "(" "path" STRING ")"
13491360

@@ -1610,13 +1621,17 @@ def construct_export_csv_config(
16101621
syntax_escapechar=builtin.some(syntax_escapechar),
16111622
)
16121623

1613-
def construct_export_csv_config_with_source(
1614-
path: String,
1624+
def deconstruct_export_csv_output_location(msg: transactions.ExportCSVConfig) -> Tuple[String, String]:
1625+
return (msg.path, msg.transaction_output_name)
1626+
1627+
def construct_export_csv_config_with_location(
1628+
location: Tuple[String, String],
16151629
csv_source: transactions.ExportCSVSource,
16161630
csv_config: logic.CSVConfig,
16171631
) -> transactions.ExportCSVConfig:
16181632
return transactions.ExportCSVConfig(
1619-
path=path,
1633+
path=location[0],
1634+
transaction_output_name=location[1],
16201635
csv_source=csv_source,
16211636
csv_config=csv_config,
16221637
)
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
(transaction
2+
(epoch
3+
(writes
4+
(define
5+
(fragment :f1
6+
(def :my_table
7+
([col1::INT col2::STRING]
8+
(or
9+
(and (= col1 1) (= col2 "hello"))
10+
(and (= col1 2) (= col2 "world"))))
11+
(attrs
12+
(attribute :csv_export))))))
13+
14+
(reads
15+
(export
16+
(export_csv_config_v2
17+
(transaction_output_name :csv_result)
18+
(table_def :my_table)
19+
(csv_config
20+
{ :csv_partition_size_mb 10
21+
:csv_compression ""
22+
:csv_quotechar "\""
23+
:csv_escapechar "\\" }))))))

0 commit comments

Comments
 (0)