csv - 从 Google 表格中的在线 CSV 文件中检索特定或查询数据,而无需将整个 CSV 数据添加到表格中
问题描述
我想从 Google 表格中的在线 CSV 文件中检索特定或查询数据,而不将整个 CSV 数据添加到表格中。例如,一个 CSV 文件存储在 中https://raw.githubusercontent.com/LazyGeniusMan/genshin-tc/main/data/characters/anemo/jean/stats.csv
,CSV 文件内容是这样的:
level,ascension,hp,atk,def,ascension_stat,ascension_value
1,0,1143.9840087890625,18.6200008392334,59.83000183105469,Healing Bonus,0
2,0,1238.934618241241,20.16545987895961,64.79588867364873,Healing Bonus,0
3,0,1333.8853640669404,21.71092113836289,69.76178264853479,Healing Bonus,0
...
19,0,2871.399851150665,46.736201928901664,150.1733040253639,Healing Bonus,0
20,0,2967.494634443574,48.30028405925759,155.19903079793949,Healing Bonus,0
20,1,3948.35748844748,64.26408448955544,206.49903003500003,Healing Bonus,0
21,1,4045.5959000870353,65.8467808318328,211.5845682083891,Healing Bonus,0
...
39,1,5808.475131076353,94.54020006523115,303.7825944112774,Healing Bonus,0
40,1,5908.002163144411,96.16014702812208,308.98782670921355,Healing Bonus,0
40,2,6604.931057187379,107.5028460790254,345.437827472153,Healing Bonus,0.055399999022483826
41,2,6703.313642667665,109.10416551193248,350.5832055755236,Healing Bonus,0.055399999022483826
假设我要检索3948.35748844748
具有 and 条件level=20
的ascension=1
。因此,如果可能,我需要根据 1 个或多个条件获取特定的单元格/列/行,如果没有,我将尝试添加新列作为标识符(列 ID)。
我尝试使用 QUERY 函数,但未检测到列名,它说Unable to parse query string for Function QUERY parameter 2: NO_COLUMN: hp
。我使用的公式是:
=QUERY(IMPORTDATA(https://raw.githubusercontent.com/LazyGeniusMan/genshin-tc/main/data/characters/anemo/jean/stats.csv), "SELECT `hp` where `level`=20 and `ascension`=1",0)
我可以通过使用Col1
,Col2
等作为列名来检测列名,但我需要指定列名,因为我有许多具有不同列名的 CSV 文件。
我是否遗漏了无法检测到列名的内容?有没有办法将 CSV 第一行声明为列名或其他内容?
注意:不确定这是否相关,CSV 文件是使用 Node.js 生成的
解决方案
尝试:
=QUERY(IMPORTDATA("https://raw.githubusercontent.com/LazyGeniusMan/genshin-tc/main/data/characters/anemo/jean/stats.csv"),
"select Col3 where Col1 = 20 and Col2 = 1", 0)
更新1:
尝试:
=DGET(IMPORTDATA(A5), "hp", {"level", "ascension"; 20, 1})
更新2:
通过翻转表格并选择我们需要使用的列来查询解决方案。然后按字母顺序对列标题进行排序并再次翻转它,以便我们知道指出要过滤的列
=QUERY(TRANSPOSE(SORT(QUERY(TRANSPOSE(IMPORTDATA(A5)),
"where Col1 matches 'hp|level|ascension'"))),
"select Col3,Col2 where Col1 = 1 and Col3 = 20", 0)
推荐阅读
- npm - 通过npm在本地注册命令cli
- entity-framework-core - EF Core 5:必须是可简化节点
- azure - Azure DevOps Starter Wizard 中缺少资源组字段
- php - php 7.4 mongodb dll 文件(1.9.0) 与 windows 10 系统上的 php 8 不兼容
- angular11 - 使用 HttpClient 的 Angular 11 中的 Cors 问题
- javascript - 如何在 react 中使用 formik 创建动态下拉列表?
- php - 创建排行榜
- vue.js - 上下文和凭据的好处
- node.js - 生产环境中的 MongoDB 备份和恢复
- git - 如何使用 android studio 删除我在 gitlab 上的最后一次推送