red-arrow-activerecord 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6e3ce2d50d09a561409312f1a6d46b9be1764028c7502b036147f8be00c1b5ce
4
- data.tar.gz: e4a5aa2ccbcf04142b9e798e5363813476b42982154dfcc5b1ca259d975de5ab
3
+ metadata.gz: e8d253180a9bf6653d4034c162efd4b092e4ea9e44f983c2f4cb8ea2aa95c8e1
4
+ data.tar.gz: d5d7ea4de22c17357d4eefa6518fadc8c88420e161be91df946e85dfdf7964c9
5
5
  SHA512:
6
- metadata.gz: b345fbf7fa5523565b991570bf09ea174be478e4b47644e0377c767380c6c27532ae4e2ad85e9587dccb7bbf48ad1eadd2b11e2c093e14ad81d91cb54300adbe
7
- data.tar.gz: 752ec4e82b12c9f599fd02a1ea6b58204a4d7de22b7cf09b502bf7c183e3a55ddeaa74db73d02d3d07e49f6d02cf50fb4fe7f7c93f4835cba0ab8284f2bb8d5f
6
+ metadata.gz: 90502eefb44fd4d6d6ffa6e66ce9864b5c6e0b384885ff5f5512f640629b19100a3d708af5b2644711bb6a25988f26bda90ee88c3f5adaad698288bda81a2f6c
7
+ data.tar.gz: 38f2b95f2da0f994ee554edeedaff59d5a5ec19a344c2c0957b74647f78c0bb20538d8d0119766f728356bd9e54850c95212a13160a8a64e61c914791eb73029
data/README.md CHANGED
@@ -1,7 +1,8 @@
1
1
  # README
2
2
 
3
3
  ## Name
4
- Red ActiveRecord
4
+
5
+ Red Arrow Active Record
5
6
 
6
7
  ## Usage
7
8
 
data/Rakefile CHANGED
@@ -12,7 +12,17 @@ helper.install
12
12
 
13
13
  desc "Run tests"
14
14
  task :test do
15
- ruby("test/run-test.rb")
15
+ ruby("test/run.rb")
16
16
  end
17
17
 
18
18
  task default: :test
19
+
20
+ release_task = Rake.application["release"]
21
+ # We use Trusted Publishing.
22
+ release_task.prerequisites.delete("build")
23
+ release_task.prerequisites.delete("release:rubygem_push")
24
+ release_task_comment = release_task.comment
25
+ if release_task_comment
26
+ release_task.clear_comments
27
+ release_task.comment = release_task_comment.gsub(/ and build.*$/, "")
28
+ end
data/doc/text/news.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # News
2
2
 
3
+ ## 0.1.3 - 2026-05-22
4
+
5
+ ### Improvements
6
+
7
+ * Added `#each_record_batch`.
8
+
9
+ ## 0.1.2 - 2026-05-22
10
+
11
+ ### Improvements
12
+
13
+ * Added support for one column case.
14
+
3
15
  ## 0.1.1 - 2019-02-02
4
16
 
5
17
  ### Improvements
@@ -3,6 +3,31 @@ require 'arrow'
3
3
  module ArrowActiveRecord
4
4
  module Arrowable
5
5
  def to_arrow(batch_size: 10000)
6
+ record_batches = each_record_batch(batch_size:).to_a
7
+ Arrow::Table.new(record_batches.first.schema, record_batches)
8
+ end
9
+
10
+ def each_record_batch(batch_size: 10000, &block)
11
+ return to_enum(__method__, batch_size:) unless block_given?
12
+
13
+ schema = build_arrow_schema
14
+ target_column_names = schema.fields.collect(&:name)
15
+ record_batch_builder = Arrow::RecordBatchBuilder.new(schema)
16
+ in_batches(of: batch_size).each do |relation|
17
+ records = relation.pluck(*target_column_names)
18
+ if target_column_names.size == 1
19
+ # [1, 2, 3] ->
20
+ # [[1], [2], [3]]
21
+ record_batch_builder.append(records.collect {|value| [value]})
22
+ else
23
+ record_batch_builder.append(records)
24
+ end
25
+ yield(record_batch_builder.flush)
26
+ end
27
+ end
28
+
29
+ private
30
+ def build_arrow_schema
6
31
  target_column_names = select_values
7
32
  target_column_names = column_names if select_values.empty?
8
33
 
@@ -14,19 +39,9 @@ module ArrowActiveRecord
14
39
  end
15
40
  fields << {name: name, data_type: extract_arrow_data_type(target_column)}
16
41
  end
17
- schema = Arrow::Schema.new(fields)
18
-
19
- record_batches = []
20
- record_batch_builder = Arrow::RecordBatchBuilder.new(schema)
21
- in_batches(of: batch_size).each do |relation|
22
- records = relation.pluck(*target_column_names)
23
- record_batch_builder.append(records)
24
- record_batches << record_batch_builder.flush
25
- end
26
- Arrow::Table.new(schema, record_batches)
42
+ Arrow::Schema.new(fields)
27
43
  end
28
44
 
29
- private
30
45
  def extract_arrow_data_type(column)
31
46
  type = nil
32
47
  if column
@@ -1,3 +1,3 @@
1
1
  module ArrowActiverecord
2
- VERSION = '0.1.1'
2
+ VERSION = "0.1.3"
3
3
  end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: red-arrow-activerecord
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - hatappi
8
8
  - Kouhei Sutou
9
- autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2019-02-01 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activerecord
@@ -113,7 +112,6 @@ homepage: https://github.com/red-data-tools/red-arrow-activerecord
113
112
  licenses:
114
113
  - MIT
115
114
  metadata: {}
116
- post_install_message:
117
115
  rdoc_options: []
118
116
  require_paths:
119
117
  - lib
@@ -128,9 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
126
  - !ruby/object:Gem::Version
129
127
  version: '0'
130
128
  requirements: []
131
- rubyforge_project:
132
- rubygems_version: 2.7.6
133
- signing_key:
129
+ rubygems_version: 4.0.10
134
130
  specification_version: 4
135
131
  summary: A library that provides conversion method between Apache Arrow and ActiveRecord
136
132
  test_files: []